procedure TForm1.Button4Click(Sender: TObject);
var
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
//ShowMessage('Ready to launch NotePad...');
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
CreateProcess( nil, PChar('Command.com /C winrar a e:\spkc.zip e:\spkc.txt'), nil, nil, False, 0,
nil, nil, StartupInfo, ProcessInfo);
with ProcessInfo do
begin
CloseHandle(hThread);
WaitForSingleObject(hProcess, INFINITE);
CloseHandle(hProcess);
end;
//ShowMessage('NotePad has terminated.');
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
CreateProcess( nil, PChar('Command.com /C winrar a e:\xs.zip e:\xs.txt'), nil, nil, False, 0,
nil, nil, StartupInfo, ProcessInfo);
with ProcessInfo do
begin
CloseHandle(hThread);
WaitForSingleObject(hProcess, INFINITE);
CloseHandle(hProcess);
end;
end;
以上是在一个过程里完成。如果执行的dos的命令较多,就要做成一个函数,以下是用函数实现
function WaitExeFinish(const sExeName: string):boolean;
var
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
b:boolean;
begin
//ShowMessage('Ready to launch NotePad...');
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
b:=CreateProcess( nil, PChar(sExeName), nil, nil, False, 0,
nil, nil, StartupInfo, ProcessInfo);
with ProcessInfo do
begin
CloseHandle(hThread);
WaitForSingleObject(hProcess, INFINITE);
CloseHandle(hProcess);
end;
Result := b;
//ShowMessage('NotePad has terminated.');
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
WaitExeFinish('Command.com /C winrar a e:\spkc.zip e:\spkc.txt');//执行完后才会执行下面的语句
WaitExeFinish('Command.com /C winrar a e:\xs.zip e:\xs.txt');
end;