Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];

Вниз

CreateProcess   Найти похожие ветки 

 
Duncan   (2003-07-28 15:08) [0]

Как отследить, что завершился процесс созданный при помощи CreateProcess (вызывает дос-окошко). Спасибо.


 
Polevi   (2003-07-28 15:19) [1]

WaitForSignleObject(hProcess)


 
Duncan   (2003-07-28 15:40) [2]

При использовании следующего кода баги возможны? Если да, то где?

GetStartupInfo(StartupInfo);
with StartupInfo ( nil, PChar(pr+"a.bat") При использовании следующего кода баги возможны? Если да, то где?

GetStartupInfo(StartupInfo);
with StartupInfo do begin
wShowWindow := SW_HIDE; //не показывать окно
dwFlags := STARTF_USESHOWWINDOW; end;
CreateProcess(nil, PChar(pr+"a.bat"), nil, nil, FALSE, CREATE_NEW_CONSOLE, nil, nil, StartupInfo, ProcessInformation);
if (WaitForSignleObject(ProcessInformation.hProcess,3600*24)=WAIT_OBJECT_0)
then ShowMessage("ok")
else ShowMessage("bad luck");
CloseHandle(ProcessInformation.hProcess);
CloseHandle(ProcessInformation.hThread);


 
Набережных С.   (2003-07-28 17:46) [3]

Проверяй, что возвращает CreateProcess и есть ли завершающий слэш в pr.


 
Duncan   (2003-07-28 18:13) [4]

pr - c обратным слешем, проблем с запуском нет, т.е. все идет нормально. Вопрос стоит именно в завершении приложении. При таком коде я действительно смогу поймать момент окончания работы процесса и всю ли память освобожу??


 
Набережных С.   (2003-07-28 18:53) [5]

При таком коде может быть все, что угодно


 
Duncan   (2003-07-28 19:40) [6]

А какой код является в данном случае более правильным?


 
ZZ   (2003-07-28 19:50) [7]

Баги не возможны в принципе.. А вот недокументированные фичи появятся :)) Проверяй что возвращают функции... хотя можно и без этого.

WaitForSignleObject(ProcessInformation.hProcess, 3600*24)=WAIT_OBJECT_0)
Выделенное жирным шрифтом время - это сколько по твоему? Сутки?


 
Duncan   (2003-07-28 19:57) [8]

Да сутки, т.к. в доке написано вроде, что WaitForSingleObject реагирует либо на завершение процесса, либо на окончание таймера, вот поэтому я так и поставил. Сам процесс в среднем действует около 3 минут.


 
ZZ   (2003-07-28 19:59) [9]

DWORD WaitForSingleObject(
HANDLE hHandle, // handle to object
DWORD dw Milliseconds // time-out interval
);

dwMilliseconds
[in] Specifies the time-out interval, in milliseconds.


 
Набережных С.   (2003-07-28 20:13) [10]

>Баги не возможны в принципе

Возможны. Еще как.


 
ZZ   (2003-07-28 20:17) [11]

Какие, если не секрет?


 
Набережных С.   (2003-07-28 20:31) [12]

Да любые. Этот код ведь не сам по себе будет существовать. Не контролируя результат вызова CreateProcess, можно получить что угодно.


 
ZZ   (2003-07-28 20:44) [13]

Ну мы можем либо создать процесс, либо нет. И проверка CreateProcess имхо абсолютно ничего не дает...
WaitForSignleObject отработает в любом случае
CloseHandle тоже ничего фатального не сделают, а дальше про CreateProcess можно забыть (ProcessInformation уже "закрыто")


 
Набережных С.   (2003-07-28 20:58) [14]

Я не об этом. Если для программы не имеет значение результат вызова CreateProcess, то зачем вообще ее вызывать? А если дальнейший код основывается на предположении, что CreateProcess отработала нормально, то к чему это приведет неизвестно.


 
Duncan   (2003-07-29 09:58) [15]

>ZZ
Спасибо, за небольшое уточнение, но время все-равно надо уменьшать :-).
>Набережных С.
Результатом вызова CreateProcess является, в моем случае, файл на диске с которым будет работать другая прога. Поэтому задача состоит в том, чтоб запустить CreateProcess, а по его завершению запустить еще раз. Поэтому очень важно освобождать память :-).


 
Набережных С.   (2003-07-29 17:34) [16]

>Duncan (29.07.03 09:58)

Ну, твое дело. "Я прокукарекал, а там хоть не рассветай"



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
3-40310
evgeniy
2003-09-22 11:52
2003.10.13
Query.Insert


7-40691
Dark Elf
2003-07-29 18:40
2003.10.13
Прием-передача через порт COM1 в Delphi


1-40506
Recruit
2003-10-02 07:55
2003.10.13
Какая функция в Delphi аналогична паскалевской Delay?


3-40256
DelphiNew
2003-09-23 11:08
2003.10.13
Index is read only


8-40519
Ламер
2003-06-12 15:53
2003.10.13
Сохранение рисунка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский