Чтение онлайн

на главную - закладки

Жанры

Программирование КПК и смартфонов на .NET Compact Framework

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

Шрифт:

/// </param>

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

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

/// </returns>

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

public static extern int RegDeleteKey(UIntPtr hkey, string subkeyName );

/// <summary>

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

/// </summary>

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

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

/// <param name="lpSubKey">[in] Имя открываемого раздела

/// </param>

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

/// Установлен равным 0</param>

/// <param name="samDesired">[in] He поддерживается. Установите

/// в 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.

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

70 Рублей

Кожевников Павел
1. 70 Рублей
Фантастика:
фэнтези
боевая фантастика
попаданцы
постапокалипсис
6.00
рейтинг книги
70 Рублей

Переписка 1826-1837

Пушкин Александр Сергеевич
Документальная литература:
публицистика
5.00
рейтинг книги
Переписка 1826-1837

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Корнев Павел Николаевич
Фантастика:
фэнтези
героическая фантастика
5.50
рейтинг книги
Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Честное пионерское! Часть 4

Федин Андрей Анатольевич
4. Честное пионерское!
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Честное пионерское! Часть 4

Здравствуйте, я ваша ведьма! Трилогия

Андрианова Татьяна
Здравствуйте, я ваша ведьма!
Фантастика:
юмористическая фантастика
8.78
рейтинг книги
Здравствуйте, я ваша ведьма! Трилогия

Мое ускорение

Иванов Дмитрий
5. Девяностые
Фантастика:
попаданцы
альтернативная история
6.33
рейтинг книги
Мое ускорение

Прорвемся, опера! Книга 2

Киров Никита
2. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прорвемся, опера! Книга 2

Невеста напрокат

Завгородняя Анна Александровна
Любовные романы:
любовно-фантастические романы
6.20
рейтинг книги
Невеста напрокат

Если твой босс... монстр!

Райская Ольга
Любовные романы:
любовно-фантастические романы
5.50
рейтинг книги
Если твой босс... монстр!

Приватная жизнь профессора механики

Гулиа Нурбей Владимирович
Проза:
современная проза
5.00
рейтинг книги
Приватная жизнь профессора механики

Попытка возврата. Тетралогия

Конюшевский Владислав Николаевич
Попытка возврата
Фантастика:
альтернативная история
9.26
рейтинг книги
Попытка возврата. Тетралогия

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

Аргумент барона Бронина 3

Ковальчук Олег Валентинович
3. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 3