要透過進程名稱檢索進程句柄,我們可以利用CreateToolhelp32Snapshot 函數來取得系統的快照。此函數提供對正在運行的進程的資訊的訪問,包括其進程名稱。
以下程式碼片段示範如何使用CreateToolhelp32Snapshot 和Process32Next 來搜尋進程命名並擷取其句柄:
#include <cstdio> #include <windows.h> #include <tlhelp32.h> int main(int, char *[]) { PROCESSENTRY32 entry; entry.dwSize = sizeof(PROCESSENTRY32); HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (Process32First(snapshot, &entry) == TRUE) { while (Process32Next(snapshot, &entry) == TRUE) { if (stricmp(entry.szExeFile, "target.exe") == 0) { HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID); // Do stuff with the process... CloseHandle(hProcess); } } } CloseHandle(snapshot); return 0; }
PROCESS_ALL_ACCESS存取權限,您可能需要暫時啟用 SE_DEBUG_NAME 權限。具體方法如下:
以上是如何在 C 中透過名稱檢索進程句柄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!