Вниз
Скачать: CL | DM;

Как получить код завершения DOS-программы ?   Найти похожие ветки 

 
ser_ker   (2003-01-23 14:39) [0]

Здравствуйте Мастера !

У меня наверное очень простой вопрос : каким образом получить код завершения DOS-программы, например архиватора rar ?

Архиватор запускается в другом процессе.

Текст модуля для создания процесса :

unit ExecCmdThread;

interface

uses
Classes, ksk_run;

type
TExecCmdThread = class(TThread)
CmdLine : String;
WindowState : Word;
private
{ Private declarations }
protected
procedure DoWork;
procedure Execute; override;
end;

function ExecCmdLineAndWait(const CmdLine: string; WindowState: Word): Boolean;

implementation

{ Important: Methods and properties of objects in VCL can only be used in a
method called using Synchronize, for example,

Synchronize(UpdateCaption);

and UpdateCaption could look like,

procedure TExecCmdThread.UpdateCaption;
begin
Form1.Caption := "Updated in a thread";
end; }

{ TExecCmdThread }

procedure TExecCmdThread.Execute;
begin
{Если Вы хотите, чтобы процедура DoWork выполнялась лишь один раз - удалите цикл while}
// while not Terminated do
Synchronize(DoWork);
end;

procedure TExecCmdThread.DoWork;
begin
{ Здесь можно уже выполнять те задачи,
которые должны быть исполнены процессом }
ExecCmdLineAndWait(CmdLine, WindowState);
end;

{ Execute a complete shell command line and waits until terminated. }

function ExecCmdLineAndWait(const CmdLine: string; WindowState: Word): Boolean;
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
{ Enclose filename in quotes to take care of
long filenames with spaces. }
FillChar(SUInfo, SizeOf(SUInfo), #0);
with SUInfo do
begin
cb := SizeOf(SUInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := WindowState;
end;
Result := CreateProcess(nil, PChar(CmdLine), nil, nil, False,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS, nil,
nil {PChar(ExtractFilePath(Filename))},
SUInfo, ProcInfo);
{ Wait for it to finish. }
if Result then
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end;

end.



в основной программе :

var
SPar : String;
T : TExecCmdThread;
begin
// Запускаем программу
// ExecCmdLineAndWait(SPar, SW_NORMAL);
T := TExecCmdThread.Create(True);
T.CmdLine := SPar;
T.WindowState := SW_NORMAL;
T.Resume;
end;


 
ZmeiGorin ©   (2003-01-23 19:17) [1]

СМ хелп
GetExitCodeProcess ;-)



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

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



Память: 0.45 MB
Время: 0.01 c
1-5009
bambina
2003-01-23 11:43
2003.02.03
excel


14-5192
ZeroDivide
2003-01-13 13:04
2003.02.03
Насморк


6-5102
Igor_thief
2002-12-07 11:01
2003.02.03
Mail


1-5019
BofA
2003-01-23 15:35
2003.02.03
Вопрос по TEdit.OnChange


1-4976
Fill
2003-01-27 08:23
2003.02.03
Pagecontrol




   Наверх