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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.007 c
8-88094
maker
2002-12-13 13:50
2003.03.27
Обработка звукового сигнала...


1-88038
asafr
2003-03-13 18:29
2003.03.27
COM сервера MS Office,


3-87818
digester
2003-03-09 12:34
2003.03.27
Работа с временем и датой.


14-88155
Новачок
2003-03-13 10:40
2003.03.27
w2k


3-87833
scream
2003-03-08 10:27
2003.03.27
Help with Blob(Stream)





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