Вход/Регистрация
Программирование КПК и смартфонов на .NET Compact Framework
вернуться

Климов Александр Петрович

Шрифт:

[DllImport("coredll.dll")]

private static extern bool SetPasswordActive(bool bActive,

 string lpszPassword);

// Функция для определения текущего состояния пароля

[DllImport("coredll.dll")]

private static extern bool GetPasswordActive;

// Функция для проверки пароля [DllImport("coredll.dll")]

private static extern bool CheckPassword(string lpszPassword);

private void butCheckPass_Click(object sender, EventArgs e) {

 txtInfo.Text ="Активность пароля: " + GetPasswordActive.ToString;

}

private void butNewPass_Click(object sender, EventArgs e) {

 MessageBox.Show("Установка нового пароля " +

 SetPassword("Активность пароля: False", txtInfо.Text).ToString);

}

private void butSetState_Click(object sender, EventArgs e) {

 MessageBox.Show("Отключение пароля: " +

 SetPasswordActive(false, txtInfo.Text).ToString);

}

private void butFindPass_Click(object sender, EventArgs e) {

 MessageBox.Show("Угадали пароль? " + CheckPassword(txtInfo.Text).ToString);

}

ВНИМАНИЕ

Будьте осторожны с данными функциями на реальном устройстве. Если вы случайно установите новый пароль, не запомнив его, то вам придется применить жесткую перезагрузку с потерей всех данных!

Перезагрузка КПК

Для карманных компьютеров может применяться как жесткая, так и мягкая перезагрузка. Жесткая перезагрузка возвращает устройство в первоначальное состояние, удаляя все установленные программы. Делать жесткую перезагрузку без особой необходимости не следует. Мягкая перезагрузка является более безопасной операцией, которую часто выполняют при появлении различных сбоев в работе программ.

Если разработчику необходимо программно перезагрузить устройство, то необходимо воспользоваться функцией

KernelIoControl
. В листинге 13.3 приведен небольшой пример, демонстрирующий мягкую перезагрузку.

Листинг 13.3

public const uint FILE_DEVICE_HAL = 0x00000101;

public const uint METHOD_BUFFERED = 0;

public const uint FILE_ANY_ACCESS = 0;

public uint CTL_CODE(uint DeviceType, uint Function,

 uint Method, uint Access) {

 return

((DeviceType << 16) | (Access << 14) | (Function << 2) | Method);

}

[DllImport("Coredll.dll")]

public extern static uint KernelIoControl(

 uint dwIoControlCode, IntPtr lpInBuf, uint nInBufSize, IntPtr lpOutBuf,

 uint nOutBufSize, ref uint lpBytesReturned);

private void butReset_Click(object sender, EventArgs e) {

 uint bytesReturned = 0;

 uint IOCTL_HAL_REBOOT =

CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE ANY ACCESS);

 KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, IntPtr.Zero,

0, ref bytesReturned);

}

Еще раз о перезагрузке

Для устройств, работающих под управлением Windows Mobile 5.0, существует более удобный способ перезагрузки. Он очень похож на код перезагрузки настольных компьютеров с использованием функции

ExitWindowsEx
. При этом надо обратить внимание на различия карманных компьютеров и смартфонов. Если КПК можно только перезагрузить, то смартфон можно и перезагрузить, и выключить. Соответствующий код приведен в листинге 13.4.

Листинг 13.4

[DllImport("aygshell.dll")]

public static extern System.Boolean ExitWindowsEx(int uFlags,

 int dwReserved);

const int EWX_REBOOT = 2; // перезагрузка

private void butReboot_Click(object sender, EventArgs e) {

 ExitWindowsEx(EWX_REBOOT, 0);

}

Поворот экрана

  • Читать дальше
  • 1
  • ...
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: