if (Registry.ERROR_SUCCESS != result) return false;
dwordResult = BitConverter.ToUInt32(bytes, 0);
return (dwordResult == 1);
} finally {
if (UIntPtr.Zero != hkey) {
Registry.RegCloseKey(hkey);
}
}
}
Теперь
эту функцию можно вызвать в любом месте программы, как показано в листинге 13.20.
Листинг 13.20
// Определяем наличие внешней клавиатуры
lblInfo.Text = IsKeyboard.ToString;
ВНИМАНИЕ
Следует, отметить, что при проверке примера на эмуляторе функция обнаруживает присутствие клавиатуры. Что, в общем-то, справедливо, так как с помощью обычной клавиатуры пользователь может вводить данные в программах, запущенных на эмуляторе.
Информация о пользователе
Также с помощью реестра можно узнать информацию о пользователе устройства. За эту информацию отвечает параметр
Owner
в разделе
HKEY_CURRENT_USER\ControlPanel\Owner
. В листинге 13.21 приведен код, который получает эту информацию.
Узнать о наличии в системе подключаемой клавиатуры можно с помощью функции API или просмотрев значение соответствующего ключа в реестре. Использование реестра
рассматривалось несколько раньше. В листинге 13.22 приведен код, который показывает, как можно узнать о присутствии подключенной клавиатуры с помощью функции API
GetKeyboardStatus
.
Листинг 13.22
/// <summary>
/// Функция возвращает статус подключаемой клавиатуры и ее
/// возможности.
/// </summary>
/// <returns>Функция возвращает битовую маску,
/// показывающую присутствие клавиатуры и ее возможности
/// </returns>
[DllImport("coredll.dll")]
public static extern uint GetKeyboardStatus;
/// <summary>
/// Показывает присутствие клавиатуры в системе
/// </summary>
public const uint KBDI_KEYBOARD_PRESENT = 0x0001;
/// <summary>
/// Показывает доступность клавиатуры.
/// Данный бит может быть изменен функцией
/// EnableHardwareKeyboard
/// </summary>
public const uint KBDI_KEYBOARD_ENABLED = 0x0002;
/// <summary>
/// Показывает наличие на клавиатуре клавиш ENTER и ESC
/// </summary>
public const uint KBDI_KEYBOARD_ENTER_ESC = 0x0004;
/// <summary>
/// Показывает наличие клавиш с буквами и цифрами
/// </summary>
public const uint KBDI_KEYBOARD_ALPHA_NUM = 0x0008;
Как правило, практически все современные модели мобильных телефонов и смартфонов поддерживают функцию виброзвонка. Следовательно, должны существовать функции для его включения и выключения. Для использования виброзвонка на смартфоне применяются функции