获取进程的句柄
由进程文件名获取:
void fnget_proc_handl(const char *pproc_name)
{
void *hproc = NULL;
void *hsnap = NULL;
PROCESSENTRY32 pe32 = {0};
pe32.dwSize = sizeof(PROCESSENTRY32);
hsnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hsnap == INVALID_HANDLE_VALUE)
return ;
if(!Process32First(hsnap,&pe32))
{
CloseHandle(hsnap);
return ;
}
do
{
if(_stricmp(pe32.szExeFile,pproc_name) != 0)
continue;
hproc = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
if(hproc != NULL)
{//取到句柄
}
CloseHandle(hproc);
}while(Process32Next(hsnap,&pe32));
CloseHandle(hsnap);
return ;
}
由窗口名获取 :
void fnget_proc_handl(const char *ptitle)
{
unsigned long dwpid = 0;
void *hproc = NULL;
HWND hWnd = FindWindow(NULL, ptitle);
if (hWnd == NULL)
return;
GetWindowThreadProcessId(hWnd, &dwpid);
hproc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwpid);
if(hproc != NULL)
{//取到句柄
}
CloseHandle(hproc);
}
本文介绍了两种获取Windows进程中进程句柄的方法:一是通过进程文件名使用CreateToolhelp32Snapshot和Process32First等API;二是通过窗口名利用FindWindow和GetWindowThreadProcessId函数。这些方法对于进行进程管理和调试具有重要作用。
1万+

被折叠的 条评论
为什么被折叠?



