程式碼
/* main.cpp
* Created on: 2014.06.08
* Author: Spike
*/
#include <iostream>
#include <string>
#include <map>
#include <windows.h>
#include <TlHelp32.h>
using namespace std;
bool traverseProcesses(map<string, int>& nameID) {
PROCESSENTRY32 pe32; pe32.dwSize = sizeof(pe32);
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnap == INVALID_HANDLE_VALUE) return false;
BOOL bRet = Process32First(hSnap, &pe32);
int num = 0;
while (bRet) {
cout << "[" << ++num << "] : Process Name: "
<< pe32.szExeFile << " ProcessID: " << pe32.th32ProcessID << endl;
nameID.insert({pe32.szExeFile, pe32.th32ProcessID});
bRet = Process32Next(hSnap, &pe32);
}
CloseHandle(hSnap);
return true;
}
int main() {
map<string, int> nameID;
traverseProcesses(nameID);
return 0;
}
輸出範例
[1] : Process Name: System ProcessID: 4
[2] : Process Name: smss.exe ProcessID: 304
[3] : Process Name: csrss.exe ProcessID: 456
...
應用
- 系統監控工具、工作管理員替代品。
- 特定程式偵測與自動化管理。
- 效能分析前置步驟(取得 PID 後再用
GetProcessTimes 等)。