用win32 api写一个通过进程名称获取进程路径并且返回的C++代码
以下是一个通过进程名称获取进程路径并且返回的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 著作权归作者所有。请勿转载和采集!