// Узнаем число строк в текстовом поле

 int numberOfLines = SendMessage(textBox1.Handle, EM_GETLINECOUNT, 0, 0);

 sbInfo.Text = 'Число строк: ' + numberOfLines.ToString();

}

Реестр

Реестр является важной частью любой операционной системы семейства Windows. Не является исключением и система Windows Mobile, в которой тоже имеется собственный реестр. Однако разработчики компании Microsoft не стали включать редактор реестра в состав Windows Mobile. Поэтому для доступа к разделам реестра приходится устанавливать программы от сторонних производителей.

Однако любой программист может написать свой редактор реестра, используя возможности .NET Compact Framework. При этом следует учитывать, что в библиотеке .NET Compact Framework 2.0 появились классы для работы с разделами реестра. Если же вы продолжаете писать программы с использованием .NET Compact Framework 1.0, то придется вызывать функции Windows API.

В листинге 13.17 приведен код, который будет работать в любой версии .NET Compact Framework.

Листинг 13.17

using System;

using System.Collections.Generic;

using System.Text;

using System.Runtime.InteropServices;

namespace Registry_CS {

 class Registry {

  /// <summary>

  /// Создает ключ

  /// </summary>

  /// <param name='keyName'>Имя создаваемого ключа</param>

  /// <returns>B успешном случае возвращается

  /// ERROR_SUCCESS</ returns>

  public static int CreateKey(UIntPtr root, string keyName) {

   UIntPtr hkey = UintPtr.Zero;

   uint disposition = 0;

   try {

    return

     RegCreateKeyEx(root, keyName, 0, null, 0, KeyAccess.None, IntPtr.Zero,

      ref hkey, ref disposition);

   } finally {

    if (UIntPtr.Zero != hkey) {

     RegCloseKey(hkey);

    }

   }

  }

  /// <summary>

  /// Удаляет ключ

  /// </summary>

  /// <param name='keyName'>Имя ключа</param>

  /// <returns>B успешном случае возвращается

  /// ERROR_SUCCESS</returns>

  public static int DeleteKey(UIntPtr root, string keyName) {

   return RegDeleteKey(root, keyName);

  }

  /// <summary>

  /// Создает строковой параметр в заданном ключе

  /// </summary>

  /// <param name='keyName'>Имя ключа</param>

  /// <param name='valueName'>Имя параметра</param>

  /// <param name='stringData'>Значение параметра</param>

  /// <returns>В успешном случае возвращается

  /// ERROR_SUCCESS</returns>

  public static int CreateValueString(string keyName, string valueName,

   string stringData) {

   UIntPtr hkey = UintPtr.Zero;

   try {

    int result = RegOpenKeyEx(root, keyName, 0, KeyAccess.None, ref hkey);

    if (ERROR_SUCCESS != result) return result;

    byte[] bytes = Encoding.Unicode.GetBytes(stringData);

    return RegSetValueEx(hkey, valueName, 0, KeyType.String, bytes,

     (uint)bytes.Length);

   } finally {

    if (UIntPtr.Zero != hkey) {

     RegCloseKey(hkey);

    }

   }

  }

  /// <summary>

  /// Создает параметр типа DWORD в заданном ключе

  /// </summary>

  /// <param name='keyName'>Имя ключа</param>

  /// <param name='valueName'>Имя параметра</param>

  /// <param name='dwordData'>Значение параметра</param>

  /// <returns>В успешном случае возвращается

  /// ERROR_SUCCESS</returns>

  public static int CreateValueDWORD(UIntPtr root, string keyName,

   string valueName, uint dwordData) {

   UIntPtr hkey = UintPtr.Zero;

   try {

    int result = RegOpenKeyEx(root, keyName, 0, KeyAccess.None, ref hkey);

    if (ERROR_SUCCESS != result) return result;

    byte[] bytes = BitConverter.GetBytes(dwordData);

    return RegSetValueEx(hkey, valueName, 0, KeyType.Dword, bytes,

     (uint)bytes.Length);

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату