Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework

Тут можно читать онлайн Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Питер, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование КПК и смартфонов на .NET Compact Framework
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2007
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-91180-270-7
  • Рейтинг:
    4.88/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework краткое содержание

Программирование КПК и смартфонов на .NET Compact Framework - описание и краткое содержание, автор Александр Климов, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Мобильные устройства все активнее вторгаются в нашу жизнь. Карманные компьютеры и смартфоны давно утратили статус дорогих игрушек и перекочевали в разряд необходимых устройств. Значит, для них необходимо создавать программное обеспечение. Так почему вы должны оставаться в стороне?

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

Книга предназначена для начинающих программистов.

Программирование КПК и смартфонов на .NET Compact Framework - читать онлайн бесплатно полную версию (весь текст целиком)

Программирование КПК и смартфонов на .NET Compact Framework - читать книгу онлайн бесплатно, автор Александр Климов
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

return RegDeleteValue(hkey, valueName);

} finally {

if (UIntPtr.Zero != hkey) {

RegCloseKey(hkey);

}

}

}

///



/// Типы ключей

///

public enum KeyType : uint {

None = 0,

String = 1,

Binary = 3,

Dword = 4,

}

///



/// Тип доступа

///

public enum KeyAccess : uint {

None = 0x0000,

QueryValue = 0x0001,

SetValue = 0x0002,

CreateSubKey = 0x0004,

EnumerateSubKeys = 0x0008,

Notify = 0x0010,

CreateLink = 0x0020

}

///



/// HKEY_CLASSES_ROOT

///

public static UIntPtr HKCR = new UintPtr(0x80000000);

///



/// HKEY_CURRENT_USER

///

public static UIntPtr HKCU = new UIntPtr(0x80000001);

///



/// HKEY_LOCAL_MACHINE

///

public static UIntPtr HKLM = new UIntPtr(0x80000002);

///



/// HKEY_USERS

///

public static UIntPtr HKU = new UintPtr(0x80000003);

///



/// Возвращаемое значение в случае успеха

///

public const int ERROR_SUCCESS = 0;

///



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

/// уже существует, то функция открывает его.

///

/// [in] Дескриптор к открываемому разделу

/// или одна из ветвей реестра:

/// HKCR, HKCU, HKLM.

/// [in] Имя для нового раздела. Данный

/// раздел должен быть подразделом раздела, определенного в

/// параметре hKey.

///

/// [in] Зарезервированный параметр.

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

/// [in] Имя класса или типа объекта

/// Данный параметр игнорируется, если раздел уже существует

///

/// [in] Игнорируется; установите

/// равным 0

///

/// [in] Игнорируется; установите

/// равным 0

///

/// [in] Установите в NULL.

///

/// [out] Переменная, получаемая от

/// дескриптора нового или открытого раздела

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

/// функцию RegCloseKey для его закрытия.

/// [out] Переменная, которая

/// получает значение 1 (REG_CREATED_NEW_KEY),

/// если раздел был создан

/// и значение 2 (REG_OPENED_EXISTING_KEY), если был открыт уже

/// существующий раздел

///

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

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

///

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

public static extern int RegCreateKeyEx(

UIntPtr hkey, String lpSubKey, uint Reserved, StringBuilder lpClass,

uint dwOptions, KeyAccess samDesired, IntPtr lpSecurityAttributes,

ref UIntPtr phkResult, ref uint lpdwDisposition);

///



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

///

/// [in] Дескриптор к удаляемому разделу или

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

///

/// [in] Имя удаляемого раздела.

/// Нельзя использовать NULL

///

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

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

///

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

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

///



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

///

/// [in] Дескриптор к открываемому разделу

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

/// [in] Имя открываемого раздела

///

/// [in] Зарезервированный параметр.

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

/// [in] He поддерживается. Установите

/// в 0.

/// [out] Переменная, получаемая от

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

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

/// закрытия

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

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

///

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

public static extern int RegOpenKeyEx(

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

ref UIntPtr phkResult);

///



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

///

/// [in] Дескриптор к открываемому разделу

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

/// [in] Значение параметра.

///

/// [in] Зарезервированный параметр.

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

/// [out] Тип данных

///

/// [out] Буфер, получающий данные.

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

///

/// [in/out] Размер буфера в байтах

///

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

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

///

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

public static extern int RegQueryValueEx(

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

byte[] lpData, ref uint lpcbData);

///



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

///

[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.

Листинг 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,

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Александр Климов читать все книги автора по порядку

Александр Климов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Программирование КПК и смартфонов на .NET Compact Framework, автор: Александр Климов. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x