以下是一个通过进程名称获取进程路径并且返回的C++代码。

#include <windows.h>
#include <tlhelp32.h>
#include <string>

std::string GetProcessPathByName(const std::string& processName)
{
    PROCESSENTRY32 processEntry = {};
    processEntry.dwSize = sizeof(PROCESSENTRY32);

    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (snapshot == INVALID_HANDLE_VALUE)
    {
        return "";
    }

    std::string processPath = "";
    if (Process32First(snapshot, &processEntry))
    {
        do
        {
            if (_stricmp(processEntry.szExeFile, processName.c_str()) == 0)
            {
                HANDLE processHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processEntry.th32ProcessID);
                if (processHandle != NULL)
                {
                    char buffer[MAX_PATH];
                    DWORD bufferSize = MAX_PATH;
                    if (QueryFullProcessImageName(processHandle, 0, buffer, &bufferSize) != 0)
                    {
                        processPath = buffer;
                    }
                    CloseHandle(processHandle);
                }
                break;
            }
        } while (Process32Next(snapshot, &processEntry));
    }

    CloseHandle(snapshot);
    return processPath;
}

这个函数使用了Windows API中的工具帮助函数(Tool Help Functions)和进程函数(Process Functions)。它会遍历所有进程,找到指定名称的进程,然后获取进程句柄并查询进程完整路径。最后返回进程完整路径字符串。如果找不到进程或者获取路径失败,返回空字符串。


原文地址: http://www.cveoy.top/t/topic/b34b 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录