c++ - 如何获得进程的整数PID?
问题描述
我很好奇 - 如何在 Windows 上的 C++ 中按名称或 PID 列表获取可执行文件的 PID?我参考了这个文档:
编译和运行此代码时,进程 ID 都是十六进制格式。有没有办法获取 PID 的整数值?
例如,有没有办法获得价值:
10200
代替
0x000027D8
我是否必须实际转换十六进制值,或者有没有办法提取等效整数?
解决方案
GetProcessId 函数
检索指定进程的进程标识符。
在这里阅读更多
代码示例(注意DWORD 定义A DWORD 是 32 位无符号整数):
DWORD MyGetProcessId(LPCTSTR ProcessName) // non-conflicting function name
{
PROCESSENTRY32 pt;
HANDLE hsnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pt.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hsnap, &pt)) { // must call this first
do {
if (!lstrcmpi(pt.szExeFile, ProcessName)) {
CloseHandle(hsnap);
return pt.th32ProcessID;
}
} while (Process32Next(hsnap, &pt));
}
CloseHandle(hsnap); // close handle on failure
return 0;
}
int main()
{
DWORD pid = MyGetProcessId(TEXT("calc.exe"));
std::cout << pid;
if (pid == 0) { printf("error 1"); getchar(); }//error
return 0;
}
推荐阅读
- c++ - 如何在 C++ 中定义一个接受所有集合的函数
- python - 了解 Python 递归
- python - 在使用 Scrapy 抓取之前检查 URL 是否在文件中
- fonts - 是否可以在 Interface Builder 中使用 SF Rounded
- python - 将python字典转换为表
- flutter - Flutter get_it 和 FutureBuilder 无法使用热重载
- .net - PowerShell:集合转换为数组报告数组值长度而不是数组值
- android - 如何从 JSONArray 创建字符串列表?
- typescript - TypeScript 可以告诉我代码库中的哪些字符串是“不安全的”吗?
- asp.net - 迁移到 HTTPS 后用户登出的频率更高