首页 > 解决方案 > 如何获得进程的整数PID?

问题描述

我很好奇 - 如何在 Windows 上的 C++ 中按名称或 PID 列表获取可执行文件的 PID?我参考了这个文档:

拍摄快照并查看流程

编译和运行此代码时,进程 ID 都是十六进制格式。有没有办法获取 PID 的整数值?

例如,有没有办法获得价值:

10200

代替

0x000027D8

我是否必须实际转换十六进制值,或者有没有办法提取等效整数?

标签: c++windowsprocess

解决方案


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;
}

推荐阅读