Доброго дня!
Есть система Windows 2000 sp4
и есть код
// открываем процесс, который поместил иконку в трей
hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID);
// получаем путь к исполняемому файлу
//::GetModuleFileNameEx(hProcess, NULL, szPath, sizeof(szPath));
// выводим его
cout << szPath;
Ну по коду видно, что нужно получить имя запущенного файла по хендлу процесса, но функция GetModuleFileNameEx не работает под моей виндовс говорит нет такой функции. Есть только GetModuleFileName.... Подскажите как мне узнать имя файла по хэндлу процесса!!!! Заранее благодарен за помощь!!!
KP>Ну по коду видно, что нужно получить имя запущенного файла по хендлу процесса, но функция GetModuleFileNameEx не работает под моей виндовс говорит нет такой функции. Есть только GetModuleFileName.... Подскажите как мне узнать имя файла по хэндлу процесса!!!! Заранее благодарен за помощь!!!
Из MSDN следует, что эта функция расположена в psapi.dll
— Вы можете приликоваться статически включив psapi.h в исходник и добавив psapi.lib к проекту
— Вы можете загружать эту функцию динамически LoadLibrary( "psapi.dll" ) + GetProcAddress( "GetModuleFileNameExA/W", ... )
Вот фрагмент psapi.h
DWORD
WINAPI
GetModuleFileNameExA(
HANDLE hProcess,
HMODULE hModule,
LPSTR lpFilename,
DWORD nSize
);
DWORD
WINAPI
GetModuleFileNameExW(
HANDLE hProcess,
HMODULE hModule,
LPWSTR lpFilename,
DWORD nSize
);
#ifdef UNICODE
#define GetModuleFileNameEx GetModuleFileNameExW
#else
#define GetModuleFileNameEx GetModuleFileNameExA
#endif // !UNICODE