注:pe.szExeFile有时候是全路经文件名,有时候只是文件名,原因有待考究,或者请哪位高手指教
DWORD GetProcessIdFromName(LPCTSTR name)
{
PROCESSENTRY32 pe;
DWORD id = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize = sizeof(PROCESSENTRY32);
if( !Process32First(hSnapshot,&pe) )
return 0;
do
{
pe.dwSize = sizeof(PROCESSENTRY32);
if( Process32Next(hSnapshot,&pe)==FALSE )
break;
if(strcmp(pe.szExeFile,name) == 0)
{
id = pe.th32ProcessID;
break;
}
} while(1);
CloseHandle(hSnapshot);
return id;
}
博客给出了一个通过文件名获取进程ID的函数GetProcessIdFromName。该函数使用CreateToolhelp32Snapshot创建进程快照,通过Process32First和Process32Next遍历进程,比较进程的可执行文件名与给定文件名,若匹配则返回进程ID。同时提到pe.szExeFile有时是全路径名,有时是文件名,原因待究。
3676

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



