Главная страница
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.06 c
15-1170823898
vajo
2007-02-07 07:51
2007.03.04
Глюки с интернетом


2-1171378612
newbie2
2007-02-13 17:56
2007.03.04
Breakpoin не отрабатывает


15-1170100659
Екатерина_1
2007-01-29 22:57
2007.03.04
FIBPlus 6.5 Новая версия компонентов.


15-1171291432
oldman
2007-02-12 17:43
2007.03.04
Вернемся к теме лицензирования?


2-1171610324
Прохожев Максим
2007-02-16 10:18
2007.03.04
Нужна помощь