首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得进程的整数PID?

如何获得进程的整数PID?
EN

Stack Overflow用户
提问于 2020-01-07 07:46:42
回答 2查看 840关注 0票数 0

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

获取快照并查看进程

在编译和运行此代码时,进程in都是十六进制格式的。是否有一种方法来代替获得PID的整数值?

例如,是否有一种方法可以获得值:

代码语言:javascript
运行
复制
10200

而不是

代码语言:javascript
运行
复制
0x000027D8

是否必须实际转换十六进制值,还是有一种方法可以提取整数等效值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-07 07:47:58

GetProcessId函数

检索指定进程的进程标识符。

阅读更多这里

代码示例(注DWORD定义 DWORD是一个32位的无符号整数 ):

代码语言:javascript
运行
复制
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;
}
票数 1
EN

Stack Overflow用户

发布于 2020-01-07 07:59:41

PID本身已经是整数。MSDN代码以十六进制格式输出PID。只需在以下2行中将0x%08X更改为%u,以输出十进制格式的PID:

代码语言:javascript
运行
复制
_tprintf( TEXT("\n Process ID = %u"), pe32.th32ProcessID );
...
_tprintf( TEXT("\n Parent process ID = %u"), pe32.th32ParentProcessID );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59624195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档