首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C++中获取进程名称

如何在C++中获取进程名称
EN

Stack Overflow用户
提问于 2010-12-31 20:47:50
回答 5查看 94.1K关注 0票数 27

如何在Windows中使用C++从PID获取进程名?

EN

回答 5

Stack Overflow用户

发布于 2010-12-31 20:56:24

您可以在拥有进程句柄后,使用WIN32接口GetModuleBaseName获取进程名称。您可以使用OpenProcess获取进程句柄。

要获得可执行文件的名称,您还可以使用GetProcessImageFileName

票数 15
EN

Stack Overflow用户

发布于 2018-08-24 14:09:33

以上所有方法都需要加载psapi.dll (Read the remarks section),并且从效率的角度来看,为了获得可执行文件的名称,甚至不应该考虑遍历进程快照。

即使根据MSDN的建议,最好的方法也是使用QueryFullProcessImageName

std::string ProcessIdToName(DWORD processId)
{
    std::string ret;
    HANDLE handle = OpenProcess(
        PROCESS_QUERY_LIMITED_INFORMATION,
        FALSE,
        processId /* This is the PID, you can find one from windows task manager */
    );
    if (handle)
    {
        DWORD buffSize = 1024;
        CHAR buffer[1024];
        if (QueryFullProcessImageNameA(handle, 0, buffer, &buffSize))
        {
            ret = buffer;
        }
        else
        {
            printf("Error GetModuleBaseNameA : %lu", GetLastError());
        }
        CloseHandle(handle);
    }
    else
    {
        printf("Error OpenProcess : %lu", GetLastError());
    }
    return ret;
}
票数 8
EN

Stack Overflow用户

发布于 2010-12-31 20:52:38

如果您正在尝试获取给定进程的可执行映像名称,请查看GetModuleFileName

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4570174

复制
相关文章

相似问题

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