Форум: "Основная";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];
ВнизКак получить код завершения 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 вся ветка
Форум: "Основная";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c