Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 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;






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

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

Наверх





Память: 0.45 MB
Время: 0.002 c
3-28423
Boss2
2001-12-08 20:20
2002.01.10
TreeView/БД


1-28502
Серега
2001-12-16 19:01
2002.01.10
I/O Error 103 и подавление системного сообщения.


14-28542
MJH
2001-11-15 14:15
2002.01.10
Epson Stylos 600


1-28477
Kost
2001-12-22 10:02
2002.01.10
Как поворвчивать bitmap


1-28472
Delphig
2001-12-22 03:16
2002.01.10
Вот такая штука. Нужно чтобы при выборе в ListBox строчки....





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский