win api取得外部应用程序进程句柄

如何用winapi获取任意一个应用程序的进程句柄,比如我想结束掉一个名字叫hj的进程,该进程没有窗口,我只是在任务管理器里看到了这个名字。我查资料找到了CreateToo... 如何用win api获取任意一个应用程序的进程句柄,比如我想结束掉一个名字叫 hj 的进程,该进程没有窗口,我只是在任务管理器里看到了这个名字。我查资料找到了CreateToolhelp32Snapshot、Process32First、Thread32Next、OpenProcess、TerminateProcess这几个函数。但是对怎么找出指定进程还是不知道怎么弄,请各位给出详细写法,或者用其他方法更好 谢谢 展开
 我来答
windning
2013-09-16 · TA获得超过611个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:298万
展开全部
C++没有直接实现通过进程名获取句柄的方法,LZ查到的函数是正确解法,我写一个样例,里面有一个GetProcessByName,LZ拿去用好了,虽然不是C#里GetProcessesByName那样方便的东西:
#include <windows.h>
#include <tlhelp32.h>
#include <tchar.h>
using namespace std;
HANDLE GetProcessByName(WCHAR * name)
{
int error;
HANDLE result = NULL;
HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcess==NULL)
return NULL;
PROCESSENTRY32 prc32;
prc32.dwSize = sizeof(prc32);
BOOL bHave = Process32First(hProcess,&prc32);
while(bHave)
{
if(wcscmp(name,prc32.szExeFile)==0)
{
result = OpenProcess(PROCESS_ALL_ACCESS,FALSE,prc32.th32ProcessID);
break;
}
bHave = Process32Next(hProcess,&prc32);
}
CloseHandle(hProcess);
return result;
}

int main()
{
HANDLE hPrc = GetProcessByName(L"Kuaiwan.exe");
if(hPrc)
TerminateProcess(hPrc,0);
return 0;
}
这个例子是把快玩给结束掉,希望对LZ有参考价值,具体来说就是先用CreateToolhelp32Snapshot拍照,然后使用Process32First等遍历,找到合适的进程名,获取句柄,然后返回
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式