怎么实现在线程里启动一个程序,当这个程序结束时再通知该线程 ( 积分: 100 )

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

wdy801229

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么实现在线程里启动一个exe程序,当这个程序结束时再通知该线程
线程的execute里该怎么写,需要同步吗?(我要起若干个这样的线程)
 
怎么实现在线程里启动一个exe程序,当这个程序结束时再通知该线程
线程的execute里该怎么写,需要同步吗?(我要起若干个这样的线程)
 
1、如果运行的exe程序是自己编写的,那可以通过发送消息或使用createmutex等来控制。
2、如果exe程序不是自己编写,那只好通过循环扫描进程来处理了。
 
好,帮顶


--------签名档---------------------------

比肩国内顶尖源码下载站点 -> 源码我爱你

http://www.source520.com
http://www.source520.net
80G源码电子书免费免注册下载,大量精辟技术文档库随时更新
******************************************************************
附:为了站点持续发展,现有本站近年来收藏的大量大型商业源码低价出售,
详情请进入以下链接查看:
http://www.source520.com/building_delphi.htm

浏览商业代码请从如下URL进入查看实物:
1.商业源码库1: ftp://source520see3:browse@61.152.199.245/
2.商业源码库2: ftp://source520see2:browse@61.152.199.245/
 
好像是
调用创建进程的 CreateProcess然后最后进行判断,具体我忘记了,好久以前见过
 
在线程中调用CreateProcess启动程
它会返回进程ID
随后使用WaitForSingleObject函数等待这个进程句柄
只有该进程结束
线程中的等待函数才会返回
你试试吧
如果给再给分我可以给你写段代码
 
http://community.csdn.net/Expert/topic/4398/4398463.xml?temp=.4822962
 
同意Mike1234567890,WaitForSingleObject函数等待进程结束
 
楼上的坐楼加价呀。
哈哈
 
Function WinExecExW(cmd,workdir:pchar;visiable:integer):DWORD;
var
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin

FillChar(StartupInfo,SizeOf(StartupInfo),#0);
StartupInfo.cb:=SizeOf(StartupInfo);
StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow:=visiable;
if not CreateProcess(nil,cmd,nil,nil,false,Create_new_console or Normal_priority_class,nil,workdir,StartupInfo,ProcessInfo) then

result:=0
else

begin

waitforsingleobject(processinfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Result);
end;

end;

调用时,WinExecExW("a.exe","c:/",SW_SHOW);WinExecExW("b.exe","c:/",SW_SHOW);WinExecExW("c.exe","c:/",SW_SHOW);
a.exe执行完了才执行b.exe然后才是c.exe
你自己改改吧
 
我一般不喜欢照抄别人代码
如果想要教别人我都是自己在Delphi中写一段代码
调试通过后才发表
当然要加价了
 
后退
顶部