Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите отследить завершение процесса архивирования [D7, WinXP]


Arhangel_isa ©   (2006-03-14 15:58:00) 

У меня задача архивирования документов по сети, мне необходимо отслеживать окончание архивирования для продолжения цикла


arhangel_isa   (2006-03-15 08:41:00) [1]

Спасибо!


kaZaNoVa   (2006-03-14 16:03:00) [2]

program Project1;
{$APPTYPE CONSOLE}
{$I-}
uses
 Windows;

var
 f: TextFile;
 si: STARTUPINFO;
 pi: PROCESS_INFORMATION;
 cmdline: string;
 p: cardinal;
 ProcessID: DWORD;
 ProcessHandle: THandle;
 ThreadHandle: THandle;

begin
 UseInputOutput;
 ProcessID := GetCurrentProcessID;
 ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION, False, ProcessID);
 SetPriorityClass(ProcessHandle, REALTIME_PRIORITY_CLASS);
 ThreadHandle := GetCurrentThread;
 SetThreadPriority(ThreadHandle, THREAD_PRIORITY_TIME_CRITICAL);
 CloseHandle(ProcessHandle);

 ZeroMemory(@si, sizeof(si));
 si.cb := SizeOf(si);

 cmdline := 'cmd.bat';//тут команды на архивирование например

 p := gettickcount;

 if not CreateProcess(nil, // No module name (use command line).
   PChar(cmdline), // Command line.
   nil, // Process handle not inheritable.
   nil, // Thread handle not inheritable.
   False, // Set handle inheritance to FALSE.
   0, // No creation flags.
   nil, // Use parent's environment block.
   nil, // Use parent's starting directory.
   si, // Pointer to STARTUPINFO structure.
   pi) // Pointer to PROCESS_INFORMATION structure.
   then
 begin
   Writeln('CreateProcess failed.');
   Readln;
   Exit;
 end;
 WaitForSingleObject(pi.hProcess, INFINITE);
 Writeln((gettickcount - p));
 CloseHandle(pi.hProcess);
 CloseHandle(pi.hThread);
//Writeln('Press Enter Key !');
 AssignFile(f, 'Result.txt');
 Append(f);
 if IOResult <> 0 then begin
   CloseFile(f);
   RewRite(f);
 end;

 Writeln(f, (gettickcount - p));
 CloseFile(f);
 Sleep(750);
end.


Наверх

Титульная страница Поиск, карта сайта Написать письмо