首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Windows 程式設計:遍歷所有執行中程式(C++)

     編輯:關於C++

程式碼

/* 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 等)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved