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

Вниз

Контроль внешнего процесса   Найти похожие ветки 

 
Vasily_ ©   (2003-03-17 21:31) [0]

Как проконролировать завершение внешней программы, запущеной из моего приложения?
Заранее благодарен за ответ, жедательно с примером.


 
Юрий Зотов ©   (2003-03-17 21:49) [1]

implementation

uses
Unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
with TMyThread.Create(False) do
begin
CommandLine := "Notepad.exe AutoExec.bat";
WorkingDirectory := "C:\";
OnTerminate := ThreadFinished
end
end;

procedure TForm1.ThreadFinished(Sender: TObject);
begin
with TMyThread(Sender) do
begin
Caption := IntToStr(ExitCode);
Free
end
end;

=========================================================

unit Unit2;

type
TMyThread = class(TThread)
private
FCommandLine: string;
FWorkingDirectory: string;
FExitCode: DWORD;
protected
procedure Execute; override;
public
property CommandLine: string read FCommandLine write FCommandLine;
property WorkingDirectory: string read FWorkingDirectory write FWorkingDirectory;
property ExitCode: DWORD read FExitCode;
end;

implementation

procedure TMyThread.Execute;
var
SI: TStartupInfo;
PI: TProcessInformation;
begin
ZeroMemory(@SI, SizeOf(SI));
SI.cb := SizeOf(SI);
if CreateProcess(nil, PChar(FCommandLine), nil, nil, False, 0, nil, PChar(FWorkingDirectory), SI, PI) then
begin
CloseHandle(PI.hThread);
while not Terminated and (WaitForSingleObject(PI.hProcess, 1000) = WAIT_TIMEOUT) do;
if Terminated or not GetExitCodeProcess(PI.hProcess, FExitCode) then FExitCode := $FFFFFFFF;
CloseHandle(PI.hProcess)
end
else FExitCode := GetLastError
end;


Запуск из основного потока:




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

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

Наверх




Память: 0.47 MB
Время: 0.019 c
7-88255
Spider-Lex
2003-01-27 08:46
2003.03.27
Программное нажатие клавиши


14-88181
Alkinoy
2003-03-11 10:00
2003.03.27
DCOM технология для начинающих


3-87831
Ya_andrei
2003-03-10 09:39
2003.03.27
Подскажите пожалуйста почему у меня при использование Table1.Inse


14-88169
digital chaos
2003-03-10 03:05
2003.03.27
коды символов в кодировке ANSI


1-88004
Sergei
2003-03-14 09:21
2003.03.27
Вопрос по TLabel