获得指定进程名的进程ID列表

来源:互联网 发布:阿里云共享经济版 编辑:程序博客网 时间:2024/05/16 11:32

该函数可用于获得指定进程名的进程ID列表

void CDSUMDlg::GetProcessIDList(CString sProcessName, CArray<int, int>& arrayProcessID)

{

 HANDLE hProcessSnap = NULL;

 PROCESSENTRY32 pe32 = {0};

 HANDLE hParentProcess = NULL;

 DWORD dwParentProcessID = 0;

 CString sFileName;

 hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

 if (hProcessSnap == INVALID_HANDLE_VALUE)

  return;

 pe32.dwSize = sizeof(pe32);

 if (!Process32First(hProcessSnap, &pe32))

 {

  CloseHandle(hProcessSnap);

  return;

 }

 do

 {

  if (sProcessName.CompareNoCase(pe32.szExeFile) == 0)

   arrayProcessID.Add(pe32.th32ProcessID);

 }while (Process32Next(hProcessSnap, &pe32));

 CloseHandle(hProcessSnap);

}