求救:如何判断exe文件运行完毕(100分)

  • 主题发起人 主题发起人 jslx2000
  • 开始时间 开始时间
J

jslx2000

Unregistered / Unconfirmed
GUEST, unregistred user!
如利用delphi来判断在delphi的程序的根目录下的一个后缀为.exe的程序执行完毕,.exe程序的运行可能与delhi有关,也可能无关。
 
找到进程的句柄
waitforinputidle函数成功返回后,目标进程正在等待用户输入
 
执行一个程序并等待它结束
function ExecuteAndWaitProcess(
const ACmdLine : string;
const ACurrDir : string = ''
):Boolean;
var
SI: TStartupInfo;
PI: TProcessInformation;
begin
FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
SI.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
SI.wShowWindow := SW_HIDE;
Screen.Cursor := crHourGlass;
try
CreateProcess(
nil,
PChar(ACmdLine),
nil,
nil,
True,
0,
nil,
PChar(ACurrDir),
SI,
PI);
WaitForSingleObject(PI.hProcess, INFINITE);
Result := True;
finally
Screen.Cursor := crDefault;
end;
end;
 
如何隐藏EXE运行程序
 
//执行文件并等待其结束
if CreateProcess(nil,pchar(SysPath+'/XXXXX.exe'),nil,nil,false,
create_new_console or normal_priority_class,nil,nil,startupinfo,processinfo) then
begin
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
//Do something during ....
end; //到此程序结束,可以在这里让另一个程序运行......
 
后退
顶部