Программирование КПК и смартфонов на .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
рейтинг книги
Отчий дом. Семейная хроника
Проза:
классическая проза
5.00
рейтинг книги
Скандальная свадьба
1. Такие разные свадьбы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Путанабус. Трилогия
Фантастика:
боевая фантастика
6.93
рейтинг книги
Идеальный мир для Лекаря 25
25. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Кодекс Крови. Книга ХVI
16. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Проданная невеста
Любовные романы:
любовно-фантастические романы
5.80
рейтинг книги
Потомок бога
1. Локки
Фантастика:
попаданцы
альтернативная история
аниме
сказочная фантастика
5.00
рейтинг книги
С Д. Том 16
16. Сердце дракона
Фантастика:
боевая фантастика
6.94
рейтинг книги
Переиграть войну! Пенталогия
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
От Советского Информбюро - 1941-1945 (Сборник)
Документальная литература:
биографии и мемуары
5.00
рейтинг книги

Санек 3
3. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прометей: повелитель стали
3. Прометей
Фантастика:
фэнтези
7.05
рейтинг книги
Отмороженный 14.0
14. Отмороженный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00