Back
...

- _RU.DELPHI (2:461/256) ------------------------------------------ _RU.DELPHI -
Msg : 82 of 82
From : Dmitriy Goldobin 2:5010/58.25 Sun 27 Oct 96 08:06
To : Dmitry Naghin
Subj : Требуется помощь по Delphi!
--------------------------------------------------------------------------------
Hi, Dmitry!

Wednesday October 23 1996 13:00, Dmitry Naghin wrote to All:

DN> Есть необходимость из программы на Delphi запустить внешнюю Dos
DN> программу и дождаться ее завершения. Только после этого программа на
DN> Delphi имеет право
DN> продолжать работу. Как запустить программу - знаю: WinExec(A,0 ); Hо
DN> вот как заставить ждать? Буду очень признателен за помощь.

Чтобы ждать, нужно пускать через CreateProcess. Смотри примерчик. Запускается
через ShowModal, дабы остальные окошки молчали.

Заодно вопрос к знатокам: как запускать напрямую без command.com, но чтобы окно
закрывалось само без подтверждения ? Как вообще задавать дос-сеттинги, чтобы
например в фуллскрине запустить ?

=== Cut ===
[]
TDOS = class(TForm)
[]
private
DosHandle: THandle;
[]

procedure TDOS.FormActivate(Sender: TObject);
var
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
with StartupInfo do
begin
cb := SizeOf(TStartupInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := SW_HIDE;
end;
if CreateProcess( nil, 'c:\command.com /c c:\fido\fastecho\feutil pack',
nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo,
ProcessInfo )
then
DosHandle := ProcessInfo.hProcess
else
Close;
end;

procedure TDOS.TimerTimer(Sender: TObject);
var
ex: DWord;
begin
GetExitCodeProcess( DosHandle, ex );
if ex <> STILL_ACTIVE then
Close;
end;

procedure TDOS.BtnTermClick(Sender: TObject);
begin
TerminateProcess( DosHandle, 255 );
end;

end.
=== Cut ===

Тот самый Dmitriy.

--- GoldED 2.50.Beta6+
* Origin: А чем бейсик от джойстика отличается? (2:5010/58.25)

23.01.99 20:00:15