封裝四項功能:啟動程式、遍歷所有程式、終止程式、遍歷程式載入的 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(通常自動)。TH32CS_SNAPPROCESS 搭配 Wow64 相關處理。