применение этих функций, приведен в листинге 13.14.

Листинг 13.14

using System.Runtime.InteropServices;

[DllImport('coredll.dll')]

private extern static void GetSystemTime(ref SYSTEMTIME lpSystemTime);

[DllImport('coredll.dll')]

private extern static uint SetSystemTime(ref SYSTEMTIME lpSystemTime);

private struct SYSTEMTIME {

 public ushort wYear;

 public ushort wMonth;

 public ushort wDayOfWeek;

 public ushort wDay;

 public ushort wHour;

 public ushort wMinute;

 public ushort wSecond;

 public ushort wMilliseconds;

}

private void GetTime() {

 // Получим системное время

 SYSTEMTIME st = new SYSTEMTIME();

 GetSystemTime(ref st);

 DateTime dt = DateTime.UtcNow.ToLocalTime();

 // Выводим сообщение

 MessageBox.Show('Текущее время: ' + st.wHour.ToString() + ':' +

  st.wMinute.ToString());

}

private void SetTime() {

 // Сначала получим системное время

 SYSTEMTIME st = new SYSTEMTIME();

 GetSystemTime(ref st);

 // А теперь прибавим один час

 st.wHour = (ushort)(st.wHour + 1 % 24);

 SetSystemTime(ref st);

 MessageBox.Show('Новое время: ' + st.wHour.ToString() + ':' +

  st.wMinute.ToString());

}

private void butGetTime_Click(object sender, EventArgs e) {

 GetTime();

}

private void butSetTime_Click(object sender, EventArgs e) {

 SetTime();

}

Создание ярлыка

В некоторых случаях программисту необходимо создать ярлык к какой-либо программе. В этом случае можно воспользоваться специальной функцией SHCreateShortcut, применение которой демонстрируется в листинге 13.15.

Листинг 13.15

/// <summary>

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

/// </summary>

/// <param name='szShortcut'>Строка, содержащая

/// путь и имя создаваемого ярлыка.

///</param>

/// <param name='szTarget'>Строка, содержащая

/// путь и аргументы для ярлыка.

/// Размер строки ограничен 256 символами.

/// </param>

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

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

/// </returns>

[DllImport('coredll.dll', EntryPoint = 'SHCreateShortcut')]

private static extern bool SHCreateShortcut(string szShortcut,

 string szTarget);

private void butCreateShortcut_Click(object sender, EventArgs e) {

 // Создадим ярлык к калькулятору

 bool success = SHCreateShortcut('\My Documents\Shortcut.lnk',

  '\Windows\calс.exe'');

}

В этом примере создается ярлык Shortcut.lnk для стандартного калькулятора, чей исполняемый файл носит имя windowscalc.exe.

Количество строк в текстовом поле

Если у текстового поля свойство Multiline имеет значение True, то свойство Lines возвращает массив строк в текстовом поле. Но у данного свойства есть два недостатка. Во-первых, свойство Lines не поддерживается библиотекой .NET Compact Framework, а во-вторых, это свойство не учитывает перенос слов. Для подсчета количества строк в многострочном текстовом поле можно использовать сообщение EM_GETLINECOUNT. Соответствующий код приведен в листинге 13.16.

Листинг 13.16

[DllImport('coredll.dll')]

static extern int SendMessage(IntPtr hwnd, int msg, int wParam, int lParam);

const int EM_GETLINECOUNT = 0x00BA;

private void butGetNumber_Click(object sender, EventArgs e) {

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

0

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

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