请教:如何强制结束一个进程

ribut9225 2006-04-25 08:30:01
已知道进程的映像名,比如是QQ.EXE
在BCB里如何强制结束该进程??

小的是初学,
请各位大侠指点一下(因为小的是初学,请详细指点)
小的谢谢先
...全文
294 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ribut9225 2006-04-26
  • 打赏
  • 举报
回复
结贴

//写的代码如下(采用循环方式)
PROCESSENTRY32 pe32;
HANDLE hprocess;
hprocess=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe32.dwSize=sizeof(PROCESSENTRY32);
if(Process32First(hprocess,&pe32)){
do{
if(StrIComp(pe32.szExeFile,"qq.exe")==0){
//找到进程,结束掉
HANDLE h_id;
h_id=OpenProcess(PROCESS_TERMINATE,false,pe32.th32ProcessID);
if(h_id){
if(TerminateProcess(h_id,-9)){
ShowMessage("结束成功");
}
else{
ShowMessage("结束失败");
}
}
else{
ShowMessage("打开ID失败");
}
}
}
}
xiaoshi0 2006-04-25
  • 打赏
  • 举报
回复
据我所知好像是没有,因为一个应用程序可以运行很多实例

怎么能通过文件名确定进程id呢,所以你只有循环查找

当找到的进程和你知道的进程同一个路径时,才证明该进程是你要的进程

这是你调用TerminateProcess函数就可以将进程关闭了。
XBox360 2006-04-25
  • 打赏
  • 举报
回复
先获得进程号
ribut9225 2006-04-25
  • 打赏
  • 举报
回复
只有循环所有进程查找

现在我知道了进程的exe名称为qq.exe
有没有不循环,直接获取进程ID的办法?
僵哥 2006-04-25
  • 打赏
  • 举报
回复
首先搜過所有Process,然後匹配QQ.exe,找到之後調用TerminateProcess
須注意的是需要當前進程有TerminateProcess的相關權限.
海嵌 2006-04-25
  • 打赏
  • 举报
回复
晕死! 没有认真看就回答, sendmessage 关闭外部程序。
sorry!
LngDotin 2006-04-25
  • 打赏
  • 举报
回复
HANDLE pHandle1=OpenProcess(PROCESS_TERMINATE,false,pID1);
::TerminateProcess(pHandle1,-9);
海嵌 2006-04-25
  • 打赏
  • 举报
回复
HWnd HWndQQ;
HWndQQ = ::FindWindow(NULL, "QQ.exe");
if (HWndQQ)
SendMessage(HWndQQ, WM_CLOSE, 0, 0);
lurel 2006-04-25
  • 打赏
  • 举报
回复
查找到进程句柄,利用TerminateProcess结束进程
Nomsdn 2006-04-25
  • 打赏
  • 举报
回复
最直观的答案:Ctrl+Alt+Del........

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧