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

Windows 程式設計:啟動/終止/遍歷程序與模組(C++ 類別封裝)

     編輯:關於C++

類別設計

封裝四項功能:啟動程式、遍歷所有程式、終止程式、遍歷程式載入的 DLL 模組。使用 Toolhelp32 API(CreateToolhelp32Snapshot, Process32First/Next, Module32First/Next)。

標頭檔

/* process.h */
#ifndef TRAVERSEPROCESSMODEL_H
#define TRAVERSEPROCESSMODEL_H
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
#include <windows.h>
#include <TlHelp32.h>

class Process {
public:
    bool startProcess(const std::string& name);
    bool terminateProcess(const std::string& name);
    bool traverseModules(const std::string& name);
    bool traverseProcesses(std::map<std::string, int>& nameID);
};
#endif

實作要點

  • startProcess:CreateProcessA 配合 STARTUPINFO 顯示視窗。
  • traverseProcesses:快照所有程式,填入 map<name, PID>。
  • terminateProcess:依名稱查 PID,OpenProcess(PROCESS_TERMINATE) 後 TerminateProcess。
  • traverseModules:以 PID 建立模組快照,列印 DLL 路徑。

測試主程式

int main() {
    Process proc;
    proc.startProcess("Image.exe");
    Sleep(5000);
    proc.terminateProcess("Image.exe");
    return 0;
}

注意事項

  • 需連結 kernel32.lib(通常自動)。
  • 終止他人程式需適當權限(管理員)。
  • 64 位元程式枚舉 32 位元程式需 TH32CS_SNAPPROCESS 搭配 Wow64 相關處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved