применение этих функций, приведен в листинге 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.
/// <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.
[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) {