运行、关闭外部程序(20分)

  • 主题发起人 主题发起人 coolingxyz
  • 开始时间 开始时间
C

coolingxyz

Unregistered / Unconfirmed
GUEST, unregistred user!
关闭自己程序打开的外部程序,是不是也只能用 findwindow 来找到句柄后才能关闭?<br><br>如果我用 Winexec 或 ShellExecute 函数打开外部程序时把返回值保存下来的,那能不能用这个返回值来关闭呢?<br><br>有没有这方面的资料?<br><br>请指教!<br>
 
第一个问题:没错,这是常用的方法,知道这个就足够了。<br>第二个问题:不能,只能打开文件,不能用来关闭。
 
自己打开的程序也要用findwindow??<br><br>如果我同时打开了几个呢??<br><br>或是我的程序打开了一个,用户又打开了一个??那这样是关闭了哪个?我只要关闭我的程序打开的这个。怎么办??<br><br>关闭资源管理器窗口,而且是关闭正浏览(即当前选择目录)特定目录的资源管理器窗口。
 
正确的方法是用createprocess 打开进程,然后就会返回一个 handle,<br>那就可以用 terminalprocess 来结束进程。
 
对!!<br>不过好象容易“死机”!
 
就象:白河愁说的:<br>自己写杀进程的代码可以了:看看下面的:<br>function TForm1.KillCourse(Item: integer): String;<br>var<br>&nbsp; h:Thandle;<br>&nbsp; a:DWord;<br>&nbsp; p:ProcessInfo;<br>&nbsp; Name:string;<br>begin<br>&nbsp; Result:='';<br>&nbsp; try<br>&nbsp; &nbsp; p:=current.Items[Item];<br>&nbsp; &nbsp; Name:=ExtractFileName(P.ExeFile);<br>&nbsp; &nbsp; h:=OpenProcess(Process_All_Access,True,p.ProcessId);<br>&nbsp; &nbsp; GetExitCodeProcess(h,a);<br>&nbsp; &nbsp; if TermInateprocess(h,a) then<br>&nbsp; &nbsp; &nbsp;Result:=Name;<br>&nbsp; finally<br>&nbsp; end;<br>end;<br>
 
多人接受答案了。
 
后退
顶部