Вниз
Скачать: CL | DM;

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

 
vovan1 ©   (2001-11-08 18:35) [0]

Доброго времени суток! Подскажите пожалуйста, как поместить в архив несколько файлов? Прочитал советы Ю.Озерова по запуску программы arj в отдельном потоке, все работает прекрасно, но с одним файлом, а если несколько файлов, то следующий поток запускается, не дождавшись завершения предыдущего. Подскажите, как быть в таком случае?


 
Delirium ©   (2001-11-08 18:56) [1]

Напиши bat-ник или создай программно


 
vovan1 ©   (2001-11-08 19:57) [2]

Народ, ну подскажите же, как тормознуть выполнение следующего потока, пока не завершится предыдущий? HELP!!!!!


 
Shmel ©   (2001-11-08 21:15) [3]

Вот когда-то писал :)
function FileExecuteWait(outpath,temppath,base:string): Integer;
var
FileName, Params, StartDir: string;
Info: TShellExecuteInfo;
ExitCode: DWORD;
p:HWND;
begin
FileName:=temppath+"My.EXE";
Params:="";
StartDir:=outpath;
FillChar(Info, SizeOf(Info), 0);
Info.cbSize := SizeOf(TShellExecuteInfo);
with Info do begin
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle;
lpFile := PChar(FileName);
lpParameters := PChar(Params);
lpDirectory := PChar(StartDir);
nShow := SW_Hide;
end;
if ShellExecuteEx(@Info) then begin
repeat
Application.ProcessMessages;
GetExitCodeProcess(Info.hProcess, ExitCode);
p:=FindWindow("#32770", nil); // убивает возникающие окна с ошибками
if (p<>0) then begin
postmessage(p, wm_quit,0,0);
End;
until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
Result := ExitCode;
end
else Result := -1;
end;

Можно еще и Так:

Function waitexec(outpath,temppath,base:string):Integer;
VAr Sp:TStartupInfo;
Pp:TProcessInformation;
Begin
FillChar(Pp,SizeOf(Pp),#0);
FillChar(Sp,Sizeof(Sp),#0);
Sp.cb := Sizeof(Sp);
Sp.dwFlags := STARTF_USESHOWWINDOW;
Sp.wShowWindow :=0; //DisplayMode;
chdir(Outpath);
if not CreateProcess(nil,
PChar(temppath+"My.EXE "+ "param"), { pointer to command line string }
nil, { pointer to process security attributes }
nil, { pointer to thread security attributes }
False, { handle inheritance flag }
CREATE_DEFAULT_ERROR_MODE or
CREATE_NEW_CONSOLE or { creation flags }
HIGH_PRIORITY_CLASS,
nil, { pointer to new environment block }
nil, { pointer to current directory name }
Sp, { pointer to STARTUPINFO }
Pp) { pointer to PROCESS_INF }
then Begin
result:=-1;
end
else begin
WaitforSingleObject(Pp.hProcess,INFINITE);
GetExitCodeProcess(Pp.hProcess,Cardinal(Result));
CloseHandle(Pp.hProcess);
CloseHandle(Pp.hThread);
Pp.hProcess:=0;
Pp.hThread:=0;
end;
End;






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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.004 c
1-28448
Aleksandr
2001-12-21 12:53
2002.01.10
Как перевести координаты мыши в координаты объекта?


6-28518
Sregey
2001-10-17 14:13
2002.01.10
О ServerWinSocket


1-28496
SL
2001-12-23 07:30
2002.01.10
Как отсортировать список в ComboBox типа Integer, т.е. 10 после 9 а не наоборот


3-28409
Lbvf
2001-12-07 17:10
2002.01.10
Uhm...


4-28561
strong
2001-09-27 11:17
2002.01.10
Не работает Create Process




   Наверх