社区
ATL
帖子详情
如何删除一个进程
liuxing2004
2004-04-30 01:43:04
我写了一个程序,此程序有时不能正常退出,即屏幕上已经没了,但在task manager中还可以看到。因此,我想通过FindWindow查找此进程的主窗口,如果此窗口是隐藏的,则说明此进程没有正常退出。因此我想把此进程删掉,但我只知道此进程的主窗口的句柄,而无法得到此进程的id,请问如何才能得到。用PSAPI可以,但我想问问有没有更简单的方法。
解决立即送分。
...全文
708
6
打赏
收藏
如何删除一个进程
我写了一个程序,此程序有时不能正常退出,即屏幕上已经没了,但在task manager中还可以看到。因此,我想通过FindWindow查找此进程的主窗口,如果此窗口是隐藏的,则说明此进程没有正常退出。因此我想把此进程删掉,但我只知道此进程的主窗口的句柄,而无法得到此进程的id,请问如何才能得到。用PSAPI可以,但我想问问有没有更简单的方法。 解决立即送分。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liuxing2004
2004-04-30
打赏
举报
回复
谢谢:csdnzhu(我什么也不会)
应该这样就可以。
csdnzhu
2004-04-30
打赏
举报
回复
/*
コッ ハ テ・FindProcessHandleAndKillInSnapShot
コッハケヲトワ:ヤレスフオトトレエ貔オマミユメオスヨクカィオトウフミフイ「ヌメームヒ・アヒタ
ー・アセ コナ:1.0
ヘ・ノネユニレ:2004/03/05
キオ サリ ヨオ:ウノケヲキオサリTRUE,キァーワキオサリFALSE
イホ ハ 1:メヤラヨキ逸ョア桄セオトウフミ・ネ・winword.exe"
ニ萢・オテ・ネ郢鉷ャメサクフミミカ犧オタヤレヤヒミミ」ャトヌテエスォヨサノアヒタメサク・ラ「メ箏トハヌユ篋ッハヨサハハモテモレWin2000マオヘウ」ャメェWin98マツスフテ釗ケモミツキセカ
モヲモテハセタ:
FindProcessHandleAndKillInSnapShot("winword.exe");
*/
BOOL FindProcessHandleAndKillInSnapShot(const CString &cs_sExeName)
{
PROCESSENTRY32 pe;
pe.dwSize=sizeof(PROCESSENTRY32);
HANDLE hProcess=NULL;
HANDLE hSnapShot;
hSnapShot=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapShot==NULL)
{
return FALSE;//cannot get the snapshot handle
}
::Process32First(hSnapShot, &pe);
do//find the assign process name
{
CString str;
str=pe.szExeFile;
if(str.CompareNoCase(cs_sExeName)==0)
{
hProcess = ::OpenProcess(PROCESS_TERMINATE, FALSE,pe.th32ProcessID);
break;
}
}while (::Process32Next(hSnapShot, &pe));
if(hProcess==NULL)
{
//return FALSE;
}
if(::WaitForSingleObject(hProcess, 10000)!= WAIT_OBJECT_0)
{
::TerminateProcess(hProcess,0);//kill process
}
::CloseHandle(hProcess);
::CloseHandle(hSnapShot);
Sleep(5*SLEEP_TIME);
return TRUE;
}
csdnzhu
2004-04-30
打赏
举报
回复
/*
コッ ハ テ・FindProcessHandleAndKill
コッハケヲトワ:クンエーソレテ軏鰈メオスエーソレヒトスフ,イ「ヌメームユ篋フノアヒタ
ー・アセ コナ:1.0
ヘ・ノネユニレ:2004/03/05
キオ サリ ヨオ:ウノケヲキオサリTRUE,キァーワキオサリFALSE
イホ ハ 1:メヤラヨキ逸ョア桄セオトエーソレオトテ﨤ニ
ニ萢・オテ・
モヲモテハセタ:
BOOL ret=FindProcessHandleAndKill("1");//イ鰈メエーソレア・簧ェ1オトエーソレ
*/
BOOL FindProcessHandleAndKill(const CString &cs_WndName)
{
HWND hWnd;
DWORD ProcessID;
HANDLE hProcess;
hWnd=::FindWindow(NULL, cs_WndName);
if(hWnd==NULL)//テサモミユメオスエーソレ
{
return FALSE;
}
else
{
if(GetWindowThreadProcessId(hWnd, &ProcessID)==0)//ハァーワ
{
return FALSE;
}
else
{
hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessID);
if(hProcess==NULL)
{
return FALSE;
}
else
{
if(TerminateProcess(hProcess, 0))
{
return TRUE;
}
else
{
return FALSE;
}
}
}
}
}
liuxing2004
2004-04-30
打赏
举报
回复
此程序是用VB写的,也不是每次都会出现不能正常退出。
madhappy
2004-04-30
打赏
举报
回复
删除进程不是解决的办法阿
一定是你的程序有问题了
检查一下内存泄漏等,NEW的东东是不是都DELETE了
Pipi0714
2004-04-30
打赏
举报
回复
估计你的程序有非法操作了。
Ubuntu下根据端口号
删除
一个
进程
Linux下多个
进程
可以同时打开同
一个
文件吗?文件描述符与打开文件的关系?
一:结论 1.两个
进程
中分别产生生成两个独立的fd 2.两个
进程
可以任意对文件进行读写操作,操作系统并不保证写的原子性 3.
进程
可以通过系统调用对文件加锁,从而实现对文件内容的保护 4.任何
一个
进程
删除
该文件时,另外
一个
进程
不会立即出现读写失败 5.两个
进程
可以分别读取文件的不同部分而不会相互影响 6.
一个
进程
对文件长度和内容的修改另外
一个
进程
可以立即感知 二:文件描述符与打开文件的关系? 内核...
Linux多
进程
读写正在
删除
的文件
Linux中多
进程
环境下,打开同
一个
文件,当
一个
进程
进行读写操作,如果另外
一个
进程
删除
了这个文件,那么读写该文件的
进程
会发生什么呢? linux是通过link的数量来控制文件
删除
,只有当
一个
文件不存在任何link的时候,这个文件才会被
删除
。 每个文件都会有2个link计数器i_count 和 i_nlink。i_count的意义是当前使用者的数量,也就是打开文件
进程
的个数。i_nlink的意义是介质连接的数量;或者可以理解为 i_count是内存引用计数器,i_nlink是硬盘引用计数器。再换句话说,当文件
如何优雅的杀掉
一个
进程
在我们通常使用linux操作系统的时候,经常会有这样的需求——杀死
一个
进程
,比如说你一不小心启动了
一个
后台
进程
或者守护
进程
,而这个
进程
是你不需要的,因此你久想杀掉他,在本篇文章当中主要给大家介绍一些杀死
进程
的方法,以及这隐藏在这后面的原理。在本篇文章当中主要给大家介绍各种 kill 命令的使用方法以及一些简单的信号含义的介绍,这部分内容在我们平常的学习工作过程当中经常会使用到,希望大家有所收获~
批量化
删除
进程
(awk命令介绍,xargs命令,pidof命令)
批量化
删除
进程
(awk命令,pidof命令,xargs命令)
ATL
3,248
社区成员
48,530
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章