GetModuleFileNameEx
От: KarpP  
Дата: 12.03.08 14:08
Оценка:
Доброго дня!
Есть система Windows 2000 sp4
и есть код

    // открываем процесс, который поместил иконку в трей
    hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID);

    // получаем путь к исполняемому файлу
    //::GetModuleFileNameEx(hProcess, NULL, szPath, sizeof(szPath));
        
    // выводим его
    cout << szPath;


Ну по коду видно, что нужно получить имя запущенного файла по хендлу процесса, но функция GetModuleFileNameEx не работает под моей виндовс говорит нет такой функции. Есть только GetModuleFileName.... Подскажите как мне узнать имя файла по хэндлу процесса!!!! Заранее благодарен за помощь!!!
Re: GetModuleFileNameEx
От: MShura  
Дата: 12.03.08 14:35
Оценка:
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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.