Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
14-36354
andy_ar
2002-11-20 11:49
2002.12.12
Поздравьте меня!


3-35990
AndrewVolkov
2002-11-21 16:17
2002.12.12
Столкнулся с сортировкой Lookup поля ((


14-36397
Anatoly Podgoretsky
2002-11-22 07:56
2002.12.12
Именинники 22 ноября


7-36434
Filat
2002-10-01 19:22
2002.12.12
Как без лишних вопросов и быстро форматнуть винт?


1-36102
Маришка
2002-12-03 09:39
2002.12.12
Приветик!




   Наверх