情况一:一个程序在运行中,我中断了它,然后用Winexec运行,发现报错了。情况二:程序没有运行,我用winexec运行它,然后中断他,再用winexec运行它

  • 主题发起人 主题发起人 sunziqi
  • 开始时间 开始时间
S

sunziqi

Unregistered / Unconfirmed
GUEST, unregistred user!
情况一:一个程序在运行中,我中断了它,然后用Winexec运行,发现报错了。情况二:程序没有运行,我用winexec运行它,然后中断他,再用winexec运行它却没有报错,不知道为什么,请大家帮忙。因为那个程序会调用一个文件,而错误说是写入文件错误.估计是资源没有释放好. (42分)<br />TProcessInfo = record<br>&nbsp; &nbsp; ExeFile: string;<br>&nbsp; &nbsp; ProcessId: DWORD;<br>&nbsp; end;<br><br>&nbsp; ProcessInfo = ^TProcessInfo;<br><br>function StopIt(Value:TFileName): Boolean;<br>var<br>&nbsp; h: THandle;<br>&nbsp; a: DWORD;<br>&nbsp; HotProcess: PRocessInfo;<br>begin<br>&nbsp; HotProcess := GetProcessInfo(Value);<br>&nbsp; h := openProcess(Process_All_Access, true, HotProcess.ProcessID);<br>&nbsp; GetExitCodeProcess(h, a);<br>&nbsp; TerminateProcess(h, a);<br>end;
 
用sendmessage来关闭试试
 
但我想知道答案啊
 
你用sendmessage是可以关闭已经运行的程序的
 
HotProcess^.ProcessId
 
为什么用<br>&nbsp;GetExitCodeProcess(h, a);<br>&nbsp;TerminateProcess(h, a);<br>啊,<br>&nbsp;GetExitCodeProcess(h, a);如果h仍然运行,那么a的值是STILL_ACTIVE<br>&nbsp;TerminateProcess(h, a);就是终止h,让h返回a值,一般来说,一般不用STILL_ACTIVE作为返回值的,你可以设置返回值为0、1、2之类<br>
 
PIPI大侠,可以说清楚一点吗?
 
好象挺有趣,<br>为什么不用shellexecute
 
多人接受答案了。
 
后退
顶部