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

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

Шрифт:

/// в 0.</param>

/// <param name="phkResult">[out] Переменная, получаемая от

/// дескриптора открытого раздела. Если вы больше не нуждаетесь

/// в дескрипторе, то вызовите функцию RegCloseKey для его

/// закрытия</param>

/// <returns>ERROR_SUCCESS сообщает об успешном вызове функции.

/// В случае ошибки возвращается ненулевое значение

/// </returns>

[DllImport("coredll.dll", SetLastError = true)]

public static extern int RegOpenKeyEx(

UIntPtr hkey, String lpSubKey, uint ulOptions, KeyAccess samDesired,

ref UIntPtr phkResult);

/// <summary>

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

/// </summary>

/// <param name="hkey">[in] Дескриптор к открываемому разделу

/// или одна из ветвей реестра: HKCR, HKCU, HKLM.</param>

/// <param name="lpValueName">[in] Значение параметра.

/// </param>

/// <param name="lpReserved">[in] Зарезервированный параметр.

/// Установите в NULL.</param>

/// <param name="lpType">[out] Тип данных

/// </param>

/// <param name="lpData">[out] Буфер, получающий данные.

/// Данный параметр может быть NULL, если данные не требуются.

/// </param>

/// <param name="lpcbData">[in/out] Размер буфера в байтах

/// </param>

/// <returns>ERROR_SUCCESS сообщает об успешном вызове функции.

/// В случае ошибки возвращается ненулевое значение

/// </returns>

[DllImport("coredll.dll", SetLastError = true)]

public static extern int RegQueryValueEx(

UIntPtr hkey, String lpValueName, IntPtr lpReserved, ref KeyType lpType,

byte[] lpData, ref uint lpcbData);

/// <summary>

/// Функция создает параметр в разделе реестра.

/// </summary>

[DllImport("coredll.dll", SetLastError = true)]

public static extern int RegSetValueEx(

UIntPtr hkey, String lpValueName, uint Reserved, KeyType dwType,

byte[] lpData, uint cbData);

[DllImport("coredll.dll", SetLastError = true)]

public static extern int RegDeleteValue(UIntPtr hkey, string valueName);

[DllImport("coredll.dll", SetLastError = true)]

public static extern int RegCloseKey(UIntPtr hkey);

 }

}

Наличие внешней клавиатуры

С помощью класса

Registry
разработчик может получать или устанавливать значения параметров в реестре. Предположим, что нужно узнать, подключена ли к устройству внешняя клавиатура. За данную функцию отвечает параметр
HasKeyboard
в разделе
HKEY_CURRENT_USER\Software\Microsoft\Shell
. Если данный параметр имеет единичное значение, то система работает с подключенной внешней клавиатурой. Если значение равно нулю, то клавиатуры нет. В листинге 13.18 приведен код, показывающий, как можно извлечь значение интересующего параметра.

Листинг 13.18

private void butCheckKeyboard_Click(object sender, EventArgs e) {

 uint check = 0;

 Registry.GetDWORDValue(Registry.HKCU, "SOFTWARE\\Microsoft\\Shell",

"HasKeyboard", ref check);

 lblInfo.Text = Convert.ToBoolean(check).ToString;

}

В этом примере используется функция-оболочка

GetDWORDValue
из класса
Registry
. Если же вы предпочитаете обходиться без функций-оболочек, а обращаться напрямую к функциям API, то пример можно переписать так, как показано в листинге 13.19.

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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