Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как из моего приложения запустить другую программу?

Как из моего приложения запустить другую программу?

Существует несколько функций, позволяющих запускать другие программы. Самая простая - 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() будет в самый раз.



К оглавлению

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
32K
21 августа 2007 года
CATAHA
1 / / 21.08.2007
Мне нравитсяМне не нравится
21 мая 2009, 14:57:51
[quote=Xelx]
WinExec ( "C:\path\to\program.exe", SW_SHOWNORMAL );

правильнее вот так:

WinExec ( 'C:path_toprogram.exe', SW_SHOWNORMAL );

т.е. с ОДИНАРНЫМИ ковычками...[/quote]

Давай не будем путать Visual C++ FAQ c Borland Delphi FAQ

Автор всё правильно написал :

WinExec ( "C:\\WINDOWS\\NOTEPAD.EXE", SW_SHOWNORMAL );
2.
Аноним
Мне нравитсяМне не нравится
30 августа 2005, 18:41:24
WinExec ( "C:\\path\\to\\program.exe", SW_SHOWNORMAL );

правильнее вот так:

WinExec ( 'C:\path_to\program.exe', SW_SHOWNORMAL );

т.е. с ОДИНАРНЫМИ ковычками...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог