Как из моего приложения запустить другую
программу?
Существует несколько функций, позволяющих
запускать другие программы. Самая простая - WinExec() :
WinExec ( "C:\\path\\to\\program.exe", SW_SHOWNORMAL );
Так же существует функция ShellExecute() ,
которая может запускать как экзешники, так и файлы,
связанные с приложениями. Например, можно "запустить"
текстовый файл, как показано ниже:
ShellExecute ( hwndYourWindow, "open", "C:\\path\\to\\readme.txt",
NULL, NULL, SW_SHOWNORMAL );
В данном примере, ShellExecute() ищет
приложение, связанное с файлами .TXT и запускает
его. ShellExecute() также позволяет
устанавливать начальную директорию для
приложения, а так же дополнительные параметры
командной строки. За более подробным описанием
функции рекомендую лезть в MSDN.
Если Вам необходимо полностью контролировать
запущенное приложение, то необходимо
использовать CreateProcess() . CreateProcess()
имеет кучу параметров, поэтому детальное
описание функции опять же смотрите в MSDN. А здесь
приведу только простой пример:
STARTUPINFO si = { sizeof(STARTUPINFO) };
PROCESS_INFORMATION pi = {0};
BOOL bSuccess;
bSuccess = CreateProcess ( NULL, "\"C:\\Program Files\\dir\\program.exe\"",
NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS,
NULL, NULL, &si, &pi );
Обратите внимание, что если имя программ
содержит пробелы, то его необходимо заключить в
кавычки, как показано выше.
Если CreateProcess() выполнена успешно, то
удостоверьтесь, что дескрипторы в структуре PROCESS_INFORMATION
закрыты, так как они нам больше не понадобытся.
CloseHandle ( pi.hThread );
CloseHandle ( pi.hProcess );
Конечно же, если всё, что Вам нужно, это просто
запустить программу, то необходимость в CreateProcess()
отпадает, а вот ShellExecute() будет в самый раз.
|