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

Вниз

*.bat. Чтобы прогр-ма ждала окончание работы   Найти похожие ветки 

 
Stenkz ©   (2002-10-28 08:16) [0]

У кого-нибудь была проблемма -
Запускаем досовский *.bat...
и программа понеслась дальше, даже если "батник" не отработал.
Как это дело сделать так, чтобы прога ждала пока батник отработает?

Я написал примерно так:

rez:=0;
rez:=WinExec("c:\rko\move.bat", SW_HIDE);
If rez>31 then
begin
Memo1.Lines.Add(" файлы перенесены в архив... ");
end
else MessageDlg("Дожитесь переноса файлов в архив",mtInformation,[mbOK],0);

Но думаю есть более красивые и надёжные средства...


 
sask ©   (2002-10-28 08:24) [1]

Можно использовать функцию FileExecuteWait (RXShell.Pas) из RX.


 
Stenkz ©   (2002-10-28 11:27) [2]

Вы имеете ввиду набор компонентов RX?

Не подскажете где можно взять хелп для них?
Как работает эта функция?



 
Alx2 ©   (2002-10-28 14:45) [3]

>Stenkz © (28.10.02 11:27)
Запускай командный интерпретатор с ключом /c и батником в параметрах. Получай хэндл интепретаторского процеса и жди его освобождения через WaitForSingleObject


 
Stenkz ©   (2002-10-28 15:13) [4]

А мона пример кода даже не совсем точно...


 
Alx2 ©   (2002-10-28 15:49) [5]

Код нерабочий (переделанная цитата из моей старой проги). Работает только идея.

var
PInf: TProcessInformation;
StInfo: TStartupInfo;
begin
while not StopCheckBox.Checked do
begin
fillchar(StInfo, sizeof(StInfo), 0);
StInfo.dwFlags := STARTF_USESHOWWINDOW;
if not CreateProcess("command.com", PChar("/c myfile.bat"), nil, nil,
False, 0, nil, nil, stInfo, PInf) then exit; // Для NT - cmd.exe в каталоге GetSystemDirectory
WaitForSingleObject(PInf.hProcess, INFINITE);

..........


 
Sharik_212   (2002-10-28 16:57) [6]

В конце батника создавай какой-нить файл, а в проге контролируй его появление. Дешево и сердито!


 
SottNick ©   (2002-10-31 08:35) [7]

рабочий код
var
si : Tstartupinfo;
p : Tprocessinformation;
nn : string;
begin
nn:="BIOS\compil.bat";
FillChar(si,Sizeof(si),#0);
si.cb:=Sizeof(si);
si.dwFlags:=STARTF_USESHOWWINDOW;
si.wShowWindow:=SW_HIDE;
CreateProcess(nil,PChar(nn),nil,nil,false,0,nil,nil,si,p);
WaitForSingleObject(p.hProcess,infinite);
...

только bat файлу надо создать ярлык и поставить галку "закрывать окно",
а то он свое окошко закрывать по окончании работы не будет
в нашем случае окошко скрытое, значит приложение вообще зависнет



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

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

Наверх




Память: 0.48 MB
Время: 0.018 c
7-36432
Beer
2002-09-27 15:02
2002.12.12
АОН


1-36211
Whippi
2002-11-25 08:39
2002.12.12
Как переместить файл в другую директорию?


3-35988
Ivan Voronov
2002-11-22 19:11
2002.12.12
Получить значение из редактирующегося DBGrid


7-36430
LAP
2002-10-13 01:29
2002.12.12
DOS <-> Windows ?


1-36243
Новичок
2002-12-02 08:35
2002.12.12
Текст выбранного эл-та в ListBoxe