![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запускаю архиватор через shellexecute, как узнать когда закончил [D5, Win95/98]
Sergey_Elf © (2002-10-10 10:32:00)Из программы запускаю архиватор через shellexecute, как узнать когда он закончил работу?
andrey_pst (2002-10-10 11:07:00) [1]
var
PChTmp : PChar;
si : STARTUPINFO;
pi : PROCESS_INFORMATION;
...
PChTmp := StrNew(PChar(ExtractShortPathName(GetCurrentDir) + "\rar.exe a " + fdPath + n_kontrakt + ".rar " + fdPath + n_kontrakt + "\*.xls -df -ep -m5 -ri15:0 -s -rr"));
ZeroMemory(@si, sizeof(si));
si.cb := SizeOf(si);
if not CreateProcess( nil, PChTmp, nil, nil, False, 0, nil, nil, si, pi ) then exit;
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
StrDispose(PChTmp);
Song (2002-10-10 10:57:00) [2]Ошибка в 17-ой строке.
Alx2 (2002-10-10 10:55:00) [3]>Sergey_Elf (10.10.02 10:48)
Не искать.
Тебе нужен хэндл процесса и WaitForSingleObject
Вот непроверенный пример с CreateProcess и архиватором
var
PInf: TProcessInformation;
StInfo: TStartupInfo;
begin
fillchar(StInfo, sizeof(StInfo), 0);
StInfo.dwFlags := STARTF_USESHOWWINDOW;
if not CreateProcess("pkzip.exe", PChar("some.zip"), nil, nil, False, 0, nil, nil, stInfo, PInf) then exit;
WaitForSingleObject(PInf.hProcess, INFINITE);
end;
Sergey_Elf (2002-10-10 10:48:00) [4]Огромное спасибо за такой сверхбыстрый ответ, но пока не работает, видимо из-за того, что я пытаюсь передавать параметры в командной строке, или не здесь искать ошибку?
Alx2 (2002-10-10 10:40:00) [5]или используй ShellExecuteEx - в нем также можно выяснить хэндл запущенного процесса для "пример с ожиданием в FAQ"
MBo (2002-10-10 10:34:00) [6]запускай Createprocess
пример с ожиданием в FAQ