通过CreateToolhelp32Snapshot创建快照,遍历之即可得到。
原型: HANDLE WINAPI CreateToolhelp32Snapshot( DWORD dwFlags, //指定需要返回的快照类型 DWORD th32ProcessID //指定快照要获取的进程,设置为0可获取系统进程列表 );dwFlags可以是:
TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。 TH32CS_SNAPHEAPLIST - 在快照中包含在th32ProcessID中指定的进程的所有的堆。 TH32CS_SNAPMODULE - 在快照中包含在th32ProcessID中指定的进程的所有的模块。 TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。 TH32CS_SNAPTHREAD - 在快照中包含系统中所有的线程。然后使用Process32First、Process32Next遍历获取信息。
代码: PROCESSENTRY32 pe; auto handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); pe.dwSize = sizeof(PROCESSENTRY32); if (!Process32First(handle, &pe)) return FALSE; DWORD id = 0; CString s; while (TRUE) { pe.dwSize = sizeof(PROCESSENTRY32); if (!Process32Next(handle, &pe)) break; CString ss; ss.Format(_T("name:%s,id:%u\r\n"), pe.szExeFile, pe.th32ProcessID); s += ss; } CloseHandle(handle); AfxMessageBox(s); 效果:PROCESSENTRY32 结构中还能获得优先级、计数、父进程等信息。