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




Вниз

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;






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




Наверх





Память: 0.72 MB
Время: 0.019 c
3-28437           Polevi                2001-12-06 18:11  2002.01.10  
MIDAS


3-28433           kd                    2001-12-10 08:03  2002.01.10  
SQL


4-28564           YUS                   2001-11-09 08:04  2002.01.10  
Создание Dll.


1-28511           VadX                  2001-12-21 15:29  2002.01.10  
Вопрос


14-28528          Васильев П.           2001-11-09 23:01  2002.01.10  
Прибалтийцы и живущие в дальнем зарубежье!