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


Авторские права

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

Здесь можно скачать бесплатно "Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство Питер, год 2007. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework
Рейтинг:
Название:
Программирование КПК и смартфонов на .NET Compact Framework
Издательство:
Питер
Год:
2007
ISBN:
978-5-91180-270-7
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

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

Описание и краткое содержание "Программирование КПК и смартфонов на .NET Compact Framework" читать бесплатно онлайн.



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

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

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






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

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


/// <summary>

/// Показывает наличие на клавиатуре клавиш ENTER и ESC

/// </summary>

public const uint KBDI_KEYBOARD_ENTER_ESC = 0x0004;


/// <summary>

/// Показывает наличие клавиш с буквами и цифрами

/// </summary>

public const uint KBDI_KEYBOARD_ALPHA_NUM = 0x0008;


private void Form1_Load(object sender, EventArgs e) {

 MessageBox.Show("Наличие и доступность клавиатуры: " +

  IsKeyboard().ToString());

}


private static bool IsKeyboard() {

 uint flags = KBDI_KEYBOARD_ENABLED | KBDI_KEYBOARD_PRESENT;

 return ((GetKeyboardStatus() & flags) == flags);

}

Виброзвонок

Как правило, практически все современные модели мобильных телефонов и смартфонов поддерживают функцию виброзвонка. Следовательно, должны существовать функции для его включения и выключения. Для использования виброзвонка на смартфоне применяются функции Vibrate, VibrateStop и VibrateGetDeviceCaps.

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

Листинг 13.23

/// <summary>

/// Включает виброзвонок

/// </summary>

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

/// ошибки возвращается E_FAIL

///</returns>

[DllImport("aygshell")]

private static extern int Vibrate(int cvn, IntPtr rgvn, uint fRepeat,

 uint dwTimeout);


/// <summary>

/// Останавливает виброзвонок

/// </summary>

/// <returns>S_OK сообщает об остановке виброзвонка. В случае

/// ошибки возвращается EFAIL

/// </returns>

[DllImport("aygshell")]

private static extern int VibrateStop();


/// <summary>

/// Получает сведения о возможности использования виброзвонка

/// </summary>

/// <param name="caps">Перечисление VIBRATEDEVICECAPS,

/// определяющее возможности воспроизведения виброзвонка

/// устройством.

///</param>

[DllImport("aygshell")]

private static extern int VibrateGetDeviceCaps(VibrationCapabilities caps);


/// <summary>


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

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

Книги похожие на "Программирование КПК и смартфонов на .NET Compact Framework" читать онлайн или скачать бесплатно полные версии.


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

Все книги автора Александр Климов

Александр Климов - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

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

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

А что Вы думаете о книге? Оставьте Ваш отзыв.