1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 返回TRUE成功FALSE失败。 szName进程名称,大小写敏感。 ProcessID获取到的进程ID。
BOOL GetProcessID(const CString& szName, DWORD& ProcessID)
{
//获取进程快照
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);// 创建快照
if (hSnapshot == INVALID_HANDLE_VALUE)
{
return FALSE;
}

PROCESSENTRY32 processList;
processList.dwSize=sizeof(PROCESSENTRY32);
BOOL bResult=Process32First(hSnapshot,&processList);
BOOL bReturn=FALSE;
while(bResult)
{
CString str=processList.szExeFile; // 进程名称
if(str==szName)
{
ProcessID = processList.th32ProcessID; // 进程ID
bReturn=TRUE;
bResult=FALSE;
break;
}
else
{
bResult=Process32Next(hSnapshot,&processList);
}
}
//清除hSnapshot对象
::CloseHandle(hSnapshot);
// 注意,在Win NT中,要删除快照,使用CloseHandle函数;
// 在Win CE中,要删除快照,使用CloseToolhelp32Snapshot函数。
return bReturn;
}