Чтение онлайн

на главную - закладки

Жанры

Программирование КПК и смартфонов на .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.

Листинг 13.9

// Константы

/// <summary>

/// Папка, содержащая файлы и папки, которые появляются на

/// экране Сегодня

/// </summary>

const int CSIDL_DESKTOPDIRECTORY = 0x0010;

/// <summary>

/// Папка Избранное

/// </summary>

const int CSIDL_FAVORITES = 0x0006;

/// <summary>

/// Папка \Мои документы

/// </summary>

const int CSIDL_PERSONAL = 0x0005;

/// <summary>

/// Папка Программы в папке Главное меню

/// (\Windows\Start Menu\Programs)

/// </summary>

const int CSIDL_PROGRAMS = 0x0002;

/// <summary>

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

Кодекс Крови. Книга III

Борзых М.
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга III

Отчий дом. Семейная хроника

Чириков Евгений Николаевич
Проза:
классическая проза
5.00
рейтинг книги
Отчий дом. Семейная хроника

Скандальная свадьба

Данич Дина
1. Такие разные свадьбы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Скандальная свадьба

Путанабус. Трилогия

Старицкий Дмитрий
Фантастика:
боевая фантастика
6.93
рейтинг книги
Путанабус. Трилогия

Идеальный мир для Лекаря 25

Сапфир Олег
25. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 25

Кодекс Крови. Книга ХVI

Борзых М.
16. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVI

Проданная невеста

Wolf Lita
Любовные романы:
любовно-фантастические романы
5.80
рейтинг книги
Проданная невеста

Потомок бога

Решетов Евгений Валерьевич
1. Локки
Фантастика:
попаданцы
альтернативная история
аниме
сказочная фантастика
5.00
рейтинг книги
Потомок бога

С Д. Том 16

Клеванский Кирилл Сергеевич
16. Сердце дракона
Фантастика:
боевая фантастика
6.94
рейтинг книги
С Д. Том 16

Переиграть войну! Пенталогия

Рыбаков Артем Олегович
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
Переиграть войну! Пенталогия

От Советского Информбюро - 1941-1945 (Сборник)

Неизвестен 3 Автор
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
От Советского Информбюро - 1941-1945 (Сборник)

Санек 3

Седой Василий
3. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Санек 3

Прометей: повелитель стали

Рави Ивар
3. Прометей
Фантастика:
фэнтези
7.05
рейтинг книги
Прометей: повелитель стали

Отмороженный 14.0

Гарцевич Евгений Александрович
14. Отмороженный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Отмороженный 14.0