Книга: Программирование КПК и смартфонов на .NET Compact Framework

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

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

Иногда требуется запустить из своей программы другое приложение. В этом случае можно призвать на помощь функцию 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", "windowsAlarm1.wav", IntPtr.Zero, IntPtr.Zero, 0, 0,
  IntPtr.Zero, IntPtr.Zero, new Byte[128], pi);
}

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

Оглавление книги


Генерация: 1.939. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз