C++代码无痕读取进程pid
时间: 2023-07-11 16:05:00 浏览: 137
要在C++中实现无痕读取进程pid,可以使用Windows API函数来实现。以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <windows.h>
using namespace std;
int main() {
string processName = "notepad.exe";
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;
DWORD dwPriorityClass;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE) {
cout << "CreateToolhelp32Snapshot error" << endl;
return 1;
}
pe32.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(hProcessSnap, &pe32)) {
cout << "Process32First error" << endl;
CloseHandle(hProcessSnap);
return 1;
}
do {
if (string(pe32.szExeFile) == processName) {
cout << "Process ID: " << pe32.th32ProcessID << endl;
break;
}
} while (Process32Next(hProcessSnap, &pe32));
CloseHandle(hProcessSnap);
return 0;
}
```
在这个示例代码中,我们使用Windows API函数 `CreateToolhelp32Snapshot()` 和 `Process32First()` 和 `Process32Next()` 来枚举系统中所有的进程。然后我们可以比较每个进程的名称,以找到我们需要的进程,最后输出该进程的pid。
阅读全文