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

Ваш аккаунт

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

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

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

Запуск процесса

12K
18 августа 2006 года
Criolit
20 / / 27.06.2006
Привет всем!
Мучаюсь, не могу разобраться какая функция запускает внешний exe-файл и недожидается завершения работы этой программы заканчивает работу. В MSDN целый выводок exec-ов всяких и для всех один комментарий, типа она запускает дочерний процесс. А кто дожидается завершения проги, кто нет - голяк какой-то. Прошу помочь.
Заранее спасибо.
398
18 августа 2006 года
Alexandoros
630 / / 21.10.2005
CreateProcess

exec - ждет процес
spawn - не ждет
но все равно юзай CreateProcess
7
08 ноября 2006 года
@pixo $oft
3.4K / / 20.09.2006
Или ShellExecute/WinExec
261
08 ноября 2006 года
ahilles
1.5K / / 03.11.2005
WinExec самая простая и самая лучшая, автоматически ищет ассоциации
547
09 ноября 2006 года
Hydra
488 / / 20.06.2006
Цитата:

WinExec самая простая и самая лучшая, автоматически ищет ассоциации


Цитата:

Win32-based applications should use the CreateProcess function rather than this function. The WinExec function exists in Win32 to provide compatibility with earlier versions of Windows.


Говоря по-русски, WinExec устарела. Самая универсальная вообще-то CreateProcess, имхо, с ней лучше разобраться.

261
09 ноября 2006 года
ahilles
1.5K / / 03.11.2005
но WinExec проще!!!!!!
и чайникам её проще понять
21K
10 ноября 2006 года
Victor I
6 / / 04.11.2006
[QUOTE=ahilles]но WinExec проще!!!!!!
и чайникам её проще понять[/QUOTE]
Код:
BOOL CreateProcess(
    LPCTSTR lpApplicationName,  // имя приложения с путем ("С:\\1.exe")
    LPTSTR lpCommandLine,   // командная строка (параметры)
    LPSECURITY_ATTRIBUTES lpProcessAttributes,  // свойства процесса
    LPSECURITY_ATTRIBUTES lpThreadAttributes,   // гл. потока
    BOOL bInheritHandles,   // наследовать хендлы (я пишу false)
    DWORD dwCreationFlags,  // флаги
    LPVOID lpEnvironment,   // новое окружение (PATH,%systemroot% и т.д)
    LPCTSTR lpCurrentDirectory, // рабочая папка
    LPSTARTUPINFO lpStartupInfo,    // STARTUPINFO
    LPPROCESS_INFORMATION lpProcessInformation  // инфо о пр-се  
   );

Тута:
lpApplicationName - если NULL, приложение берется из след. параметра
lpCommandLine - если lpApp==NULL, имя приложения, иначе параметры или ничего.
lpProcessAttributes, lpThreadAttributes почти всегда NULL, разберешься по мере надобности
--------
dwCreationFlags:
CREATE_NEW_CONSOLE - no comment
CREATE_SHARED_WOW_VDM - на ВОВ забей, она мертва. (Это не
Великая Отечественная Война, это Win16 On Win32)
DETACHED_PROCESS - для консоли, новый процесс не имеет доступа к
старой консоли
+ суда приоритеты:
NORMAL_(ИЛИ IDLE_; HIGH_; REALTIME_; )PRIORITY_CLASS,
+ создать замороженным:
CREATE_SUSPENDED
--------
lpEnvironment = NULL //используешь старое окружение
--------
lpStartupInfo - заполни заранее
lpStartupInfo.cb=sizeof(STARTUPINFO);
остально можно не использовать, см. справку
--------
PROCESS_INFORMATION *pi - получает инфу о созданном процессе.
--------
Если все удачно, ф-ция вернет не 0;
---------------------------
Если с этим трудно разобраться, используй WinExec. И VisualBasic :)
Оно себя окупит, читай справку
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог