Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.04;
Скачать: CL | DM;

Вниз

Как узнать время окончания архивации   Найти похожие ветки 

 
VitAngel   (2007-02-12 18:50) [0]

Вечер добрый! Как, после запуска архивации из программы(ShellExecute), узнать о том, что она завершена?


 
koha ©   (2007-02-12 19:05) [1]


> Вечер добрый! Как, после запуска архивации из программы(ShellExecute),
>  узнать о том, что она завершена?


И вообще не парься с этой функцией вот предлагаю другую, которая запускает процесс и ждет его окончания, если ее запускать в цикле, а когда один процес завершится, запустит другой. Отредактируешь ее мемного и сгодится,  а так полность рабочая:

function ExecAndWait(const FileName: string; const CmdShow: Integer): Longword;
var { by Pat Ritchey }
 zAppName: array[0..512] of Char;
 zCurDir: array[0..255] of Char;
 WorkDir: string;
 StartupInfo: TStartupInfo;
 ProcessInfo: TProcessInformation;
 AppIsRunning: DWORD;
begin
 StrPCopy(zAppName, FileName);
 GetDir(0, WorkDir);
 StrPCopy(zCurDir, WorkDir);
 FillChar(StartupInfo, SizeOf(StartupInfo), #0);
 StartupInfo.cb          := SizeOf(StartupInfo);
 StartupInfo.dwFlags     := STARTF_USESHOWWINDOW;
 StartupInfo.wShowWindow := CmdShow;
 if not CreateProcess(nil,
   zAppName, // pointer to command line string
   nil,      // pointer to process security attributes
   nil,      // pointer to thread security attributes
   False,    // handle inheritance flag
   CREATE_NEW_CONSOLE or // creation flags
   NORMAL_PRIORITY_CLASS,
   nil,         //pointer to new environment block
   nil,         // pointer to current directory name
   StartupInfo, // pointer to STARTUPINFO
   ProcessInfo) // pointer to PROCESS_INF
   then Result := WAIT_FAILED
 else
 begin
   while WaitForSingleObject(ProcessInfo.hProcess, 0) = WAIT_TIMEOUT do
   begin
     Application.ProcessMessages;
     Sleep(50);
   end;
   {
   // or:
   repeat
     AppIsRunning := WaitForSingleObject(ProcessInfo.hProcess, 100);
     Application.ProcessMessages;
     Sleep(50);
   until (AppIsRunning <> WAIT_TIMEOUT);
   }
   WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
   GetExitCodeProcess(ProcessInfo.hProcess, Result);
   CloseHandle(ProcessInfo.hProcess);
   CloseHandle(ProcessInfo.hThread);
 end;
end; { WinExecAndWait32 }



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

Текущий архив: 2007.03.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.035 c
15-1171273167
vasIZmax
2007-02-12 12:39
2007.03.04
Save.... Good


15-1170839532
neu4
2007-02-07 12:12
2007.03.04
Материнский капитал...


15-1171010742
Kolan
2007-02-09 11:45
2007.03.04
Ухты, for I := 1 to Length(FData) do, BDS сама объявила I :)


1-1168463719
Extar
2007-01-11 00:15
2007.03.04
Разрешить редактировать только одну колонку в StringGrid как?


2-1171175715
Novichok_new
2007-02-11 09:35
2007.03.04
добавить задание в планировщик