Имею ID процесса, отсюда могу найти его хендл, нужно найти полный путь к файлу, пока из примеров Майкрософт удалось только получить название файла с расширением, а нужно полный путь, включая название. Может кто направить на путь истинный?
Код:
std::string FunctionalSet::GetProcCommandLine(_int32 ProcessID)
{
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
return ("0");
}
pe32.dwSize = sizeof (PROCESSENTRY32);
Process32First(hProcessSnap, &pe32);
do
{
if (pe32.th32ProcessID == ProcessID)
{
return pe32.szExeFile;
}
} while (Process32Next(hProcessSnap, &pe32));
return ("0");
}
Я нашел решение:
GetModuleFileNameEx
Я думал, что эта функция будет доступна из библиотеки windows.h.
Я подключил следующую библиотеку и все заработало
#include < Psapi.h>
Процедура, которая принимает ID и возвращает полный путь к процессу.
Код:
std::string FunctionalSet::GetProcCommandLine(_int32 ProcessID)
{
setlocale(0, "");
char path[256] = "";
HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, 0, ProcessID);
HMODULE mod;
EnumProcessModules(pHandle, &mod, sizeof(HMODULE), NULL);
GetModuleFileNameEx(pHandle, mod, path, 255);
return path;
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости