Вход/Регистрация
Программирование КПК и смартфонов на .NET Compact Framework
вернуться

Климов Александр Петрович

Шрифт:

[DllImport("coredll.dll")]

private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);

/// <summary>

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

/// нажать кнопку Start

/// </summary>

public static void HideTaskbar {

 IntPtr h = FindWindow("HHTaskBar", "");

 ShowWindow(h, SW_HIDE);

}

/// <summary>

/// Показывает панель задач

/// </summary>

public static void ShowTaskBar {

 IntPtr h = FindWindow("HHTaskBar", "");

 ShowWindow(h, SW_SHOW);

}

private void butHideTaskbar_Click(object sender, EventArgs e) {

 HideTaskbar;

}

private void butShowTaskbar_Click(object sender, EventArgs e) {

 ShowTaskBar;

}

На самом деле с помощью функций

FindWindow
и
ShowWindow
можно показывать и скрывать не только панель задач, но и окна других приложений.

Запуск других приложений

Иногда требуется запустить из своей программы другое приложение. В этом случае можно призвать на помощь функцию API

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

Листинг 13.8

public class ProcessInfo {

 public IntPtr hProcess;

 public IntPtr hThread;

 public Int32 ProcessId;

 public Int32 ThreadId;

}

[DllImport("CoreDll.DLL", SetLastError = true)]

private extern static int CreateProcess(

 String imageName, String cmdLine, IntPtr lpProcessAttributes,

 IntPtr lpThreadAttributes, Int32 boolInheritHandles,

 Int32 dwCreationFlags, IntPtr lpEnvironment, IntPtr lpszCurrentDir,

 byte[] si, ProcessInfo pi);

private void butCalc_Click(object sender, EventArgs e) {

 //Запускаем калькулятор

 ProcessInfo pi = new ProcessInfo;

 CreateProcess(

"calc.exe", "", IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, IntPtr.Zero,

new Byte[128], pi);

}

private void butCalendar_Click(object sender, EventArgs e) {

 //Запускаем календарь

 ProcessInfo pi = new ProcessInfo;

 CreateProcess(

"calendar.exe", "", IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero,

IntPtr.Zero, new Byte[128], pi);

}

private void butInfra_Click(object sender, EventArgs e) {

 //Посылаем файл через инфракрасное соединение

 ProcessInfo pi = new ProcessInfo;

 CreateProcess(

"Beam.exe", "\\windows\\Alarm1.wav", IntPtr.Zero, IntPtr.Zero, 0, 0,

IntPtr.Zero, IntPtr.Zero, new Byte[128], pi);

}

Приведенный код достаточно прост. Нужно вызвать функцию

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

Названия специальных файлов

В Windows существует ряд специальных папок, в которых содержатся файлы определенной категории. Например, в папке Избранное содержатся ссылки на любимые сайты пользователя.

Проблема заключается в том, что в локализованных версиях Windows эти папки зачастую имеют разные названия. Так, в американской версии Windows упомянутая папка имеет название

Favorites
. И если ваша программа ссылается на файл, находящийся в специальной папке, то необходимо точно узнать, как называется эта папка на конкретном устройстве. Код проверки приведен в листинге 13.9.

  • Читать дальше
  • 1
  • ...
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: