急呀,兄弟们! (50分)

  • 主题发起人 主题发起人 wang0727
  • 开始时间 开始时间
W

wang0727

Unregistered / Unconfirmed
GUEST, unregistred user!
我在同一个事件中。调用了两个外部程序。用shellexecute().
可是两个程序几乎在同时跳了出来。我要求的结果不是这样的。我想让一个外部程序执行完毕后再弹出另外一个。请各位大侠指点。
 
procedure TMainFrm.btn_createprocessClick(Sender: TObject);
var
startupinfo:tstartupinfo;
processinfo:tprocessinformation;
begin
//初始化工作
fillchar(startupinfo,sizeof(startupinfo),#0);
startupinfo.cb:= sizeof(startupinfo);
startupinfo.dwFlags := startf_useshowwindow;
//执行文件并等待其结束
if createprocess(nil,pchar(edt_run.text),nil,nil,false,
create_new_console or normal_priority_class,nil,nil,startupinfo,processinfo) then
begin
WaitForSingleObject(ProcessInfo.hProcess,infinite);
// do something during ....
end;
//到此程序结束,可以在这里让另一个程序运行。。。
end;
 
兄弟,这样做是可以,可是当执行第一个程序的时候。原来我们的主窗体就会无效。我拖一下上面的程序。后面就全为白色的了。怎么办?
 
用线程就可以了
 
不会呀,怎么做?能详细点吗?
 
TYourThread从TThread类继承,将上面的代码放在Execute里,然后TYourThread.Create(...)
 
多人接受答案了。
 
后退
顶部