Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Вниз

Как дождаться выполнения bat-файла?   Найти похожие ветки 

 
Гость2   (2005-06-26 10:13) [0]

Из приложения запускаю bat-файл, который выполняет команды на протяжении 2-3 минут. Надо проверить правильность выполнения батника (наличие созданых батником файлов и папок). Но это можна сделать только, когда батник проработал до конца. Как определить, что батник завершил роботу?


 
MS-MEN ©   (2005-06-26 18:33) [1]

Есть такие ф-ций но не помню (Все помнить не возможно)
предлагаю указать инструкцию в конце "BAT" файла
простую команду, например создание директорий.

Вот может это поможет.

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Запуск программы и ожидание ее окончания, принудительное завершение если timeout

Функция создавалась для запуска и сопровождения приложения в указаном интервале времени.
Я лично для наблюдения за работой приложения включил функцию в нить,
которая (обрывалась) по завершении процесса.

Зависимости: Classes, SysUtils, Windows, strUtils, Consts;
Автор:       August, august@torba.com, ICQ:176381214
Copyright:   doctorAugust
Дата:        5 февраля 2003 г.
***************************************************** }

function ExecuteFileTm(FileName: string; Params: string; Dsk: boolean; TimeOut:
 cardinal): boolean;
var
 Res: LongBool;
 PIn: PROCESS_INFORMATION;
 SII: STARTUPINFO;
 RetCode: cardinal;
 TmOut: cardinal; //In seconds
 i: cardinal;
 CreationsFlags: cardinal;
begin
 TmOut := TimeOut;
 try
   if Dsk then
   begin
     CreationsFlags := CREATE_DEFAULT_ERROR_MODE or NORMAL_PRIORITY_CLASS
       or CREATE_UNICODE_ENVIRONMENT;
   end
   else
   begin
     CreationsFlags := CREATE_DEFAULT_ERROR_MODE or CREATE_NO_WINDOW
       or NORMAL_PRIORITY_CLASS
       or CREATE_UNICODE_ENVIRONMENT;
   end;
   getstartupinfo(SII);
   Res := createprocess(
     pchar(FileName),
     pchar(Params),
     nil,
     nil,
     True,
     CreationsFlags,
     nil,
     pchar(extractfilepath(FileName)),
     SII,
     PIn);
 except
   CloseHandle(Pin.hProcess);
   ExecuteFileTm := False;
   exit;
 end;
 if not Res then
 begin
   CloseHandle(Pin.hProcess);
   ExecuteFileTm := False;
   exit;
 end;
 i := 0;
 RetCode := STILL_ACTIVE;
 while (i <= TmOut) and (RetCode = STILL_ACTIVE) do
 begin
   try
     GetExitCodeProcess(Pin.hProcess, RetCode);
   except
     CloseHandle(Pin.hProcess);
     ExecuteFileTm := False;
     exit;
   end;
   Sleep(1000);
   inc(i);
 end;
 if (i > TmOut) and (RetCode = STILL_ACTIVE) then
 begin
   TerminateProcess(Pin.hProcess, RetCode);
   CloseHandle(Pin.hProcess);
   // ExecuteFilePrExt:=false;
   ExecuteFileTm := false; // ION T
   exit;
 end;
 CloseHandle(Pin.hProcess);
 ExecuteFileTm := True;
end;


 
MS-MEN ©   (2005-06-26 18:38) [2]

function WinExecAndWait(Path: PChar; Visibility: Word): Word;
var
 InstanceID: THandle;
 Msg: TMsg;
begin
 InstanceID := WinExec(Path, Visibility);
 if InstanceID < 32 then { значение меньше чем 32 указывает на ошибку }
   WinExecAndWait := InstanceID
 else
   repeat
     while PeekMessage(Msg, 0, 0, 0, pm_Remove) do
     begin
       if Msg.message = wm_Quit then
         Halt(Msg.WParam);
       TranslateMessage(Msg);
       DispatchMessage(Msg);
     end;
   until
     GetModuleUsage(InstanceID) = 0;
 WinExecAndWait := 0;
end;


 
BiN ©   (2005-06-27 11:38) [3]

MS-MEN ©   (26.06.05 18:33) [1], [2]
http://www.veloplus.ru/invent/g/sht1.jpg
-)

смотрим Wait-функции



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

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

Наверх





Память: 0.46 MB
Время: 0.039 c
1-1122537926
Choovak
2005-07-28 12:05
2005.08.21
Зашифровать файл


3-1121013164
atruhin
2005-07-10 20:32
2005.08.21
Репликация по email или на дискетах


14-1122815252
ROCKER***
2005-07-31 17:07
2005.08.21
Ламоразмы


14-1122469608
oldman
2005-07-27 17:06
2005.08.21
Вот и к нам пришла жара...


14-1122300916
Piter
2005-07-25 18:15
2005.08.21
Ни один лист бумаги невозможно сложить пополам больше семи раз





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