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

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

Шрифт:
Листинг 13.19

private static bool IsKeyboard {

 uint dwordResult;

 UIntPtr hkey = UIntPtr.Zero;

 try {

int result =

Registry.RegOpenKeyEx(Registry.HKCU, "SOFTWARE\\Microsoft\\Shell", 0,

Registry.KeyAccess.None, ref hkey);

if (Registry.ERROR_SUCCESS != result) return false;

byte[] bytes = null;

uint length = 0;

Registry.KeyType keyType = Registry.KeyType.None;

result =

Registry.RegQueryValueEx(hkey, "HasKeyboard", IntPtr.Zero, ref keyType,

null, ref length);

if (Registry.ERROR_SUCCESS != result) return false;

bytes = new byte[Marshal.SizeOf(typeof(uint))];

length = (uint)bytes.Length;

keyType = Registry.KeyType.None;

result =

Registry.RegQueryValueEx(hkey, "HasKeyboard", IntPtr.Zero, ref keyType,

bytes, ref length);

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 приведен код, который получает эту информацию.

Листинг 13.21

private void butOwner_Click(object sender, EventArgs e) {

 string strOwner = "";

 Registry.GetStringValue(Registry.HKCU, "\\ControlPanel\\Owner", "Owner",

ref strOwner);

 lblInfo.Text = strOwner;

}

Наличие дополнительной клавиатуры

Узнать о наличии в системе подключаемой клавиатуры можно с помощью функции 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;

  • Читать дальше
  • 1
  • ...
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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