如何关闭已经启动的进程,那位哥哥姐姐告诉我啊!(50分)

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

windff

Unregistered / Unconfirmed
GUEST, unregistred user!
如何关闭已经启动的进程,该进程是由自己的程序调用其它可执行文件(如写字板)。<br>注意啊,我说的是进程不是线程!<br>我很菜,所以请给我回答时务必加上注释,谢谢!
 
可以向其他程序发送关闭窗口命令的消息,下面是个关闭Windows计算器的例子。<br>var<br>&nbsp; &nbsp;HWndCalculator : HWnd; &nbsp;// 程序句柄。<br>begin<br>// 找到在运行的计算器程序<br>&nbsp; &nbsp;HWndCalculator := FindWindow(nil, '计算器'); // close the exist Calculator<br>&nbsp; &nbsp;if HWndCalculator &lt;&gt; 0 then<br>&nbsp; &nbsp;SendMessage(HWndCalculator, WM_CLOSE, 0, 0); &nbsp;// 发送关闭消息
 
function KillTask(ExeFileName: string): Integer;<br>const<br>&nbsp; PROCESS_TERMINATE = $0001;<br>var<br>&nbsp; ContinueLoop: BOOL;<br>&nbsp; FSnapshotHandle: THandle;<br>&nbsp; FProcessEntry32: TProcessEntry32;<br>begin<br>&nbsp; Result := 0;<br>&nbsp; FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);<br>&nbsp; FProcessEntry32.dwSize := SizeOf(FProcessEntry32);<br>&nbsp; ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);<br>&nbsp; &nbsp; //'正准备关闭主程序...';<br>&nbsp; while Integer(ContinueLoop) &lt;&gt; 0 do<br>&nbsp; begin<br>&nbsp; &nbsp; if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =<br>&nbsp; &nbsp; &nbsp; UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =<br>&nbsp; &nbsp; &nbsp; UpperCase(ExeFileName))) then<br>&nbsp; &nbsp; &nbsp; Result := Integer(TerminateProcess(<br>&nbsp; &nbsp; &nbsp; &nbsp; OpenProcess(PROCESS_TERMINATE,<br>&nbsp; &nbsp; &nbsp; &nbsp; BOOL(0),<br>&nbsp; &nbsp; &nbsp; &nbsp; FProcessEntry32.th32ProcessID),<br>&nbsp; &nbsp; &nbsp; &nbsp; 0));<br>&nbsp; &nbsp; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);<br>&nbsp; &nbsp; &nbsp;//'正在关闭主程序,请等待...';<br>&nbsp; end;<br>&nbsp; CloseHandle(FSnapshotHandle);<br>end;<br>{<br>调用方法<br>&nbsp; KillTask('NotePad.exe');<br>这里'NotePad.exe是在进程管理器中的映像名称<br>&nbsp;}<br>
 
lich007的方法不是很好,凑合用把。<br>linsb的太难懂了!我希望简单些
 
我试过几种方法,提供给你的是有效的。
 
linsb 借助csdn的一篇文章,基本上把你的代码看懂了!具体我再试试
 
to windff<br>那篇文章,能告诉链接吗?
 
这篇文章我仔细看了看,好像也没太大关系,等我找到一定会放上来的!
 
后退
顶部