Просмотр полной версии : Аналог GetModuleFileNameEx() в win 9x
Господа программеры, подскажите, плиз, по сабжу. Имеется хэндл процесса, нужно получить полный путь к бинарнику. В NT на этот случай есть psapi, а чем бы воспользоваться в 98х ? Вот такой вот вопрос возник в моей больной после вчерашнего голове...
P.S.
О мудрейший Гесер! предлагаю создать раздел на форуме для разработчиков. Вот под такие вот топики...
Зайцев Олег
22.12.2004, 15:14
Господа программеры, подскажите, плиз, по сабжу. Имеется хэндл процесса, нужно получить полный путь к бинарнику. В NT на этот случай есть psapi, а чем бы воспользоваться в 98х ? Вот такой вот вопрос возник в моей больной после вчерашнего голове...
P.S.
О мудрейший Гесер! предлагаю создать раздел на форуме для разработчиков. Вот под такие вот топики...
В Win98 есть аналог PSAPI - Toolhelp32. Соответственно CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PID) создает для заданного PID список библиотек, а CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) создает список процессов. Перемещение по спискам - Module32First/Module32Next и Process32First/Process32Next. В полученных списках есть PID всех процессов и модулей.
С другой стороны, что у нас на входе - хендл процесса (полученный после OpenProcess) или все-аки его PID ??
Просто
HANDLE OpenProcess(
DWORD dwDesiredAccess,***// access flag
BOOL bInheritHandle,***// handle inheritance flag
DWORD dwProcessId ***// process identifier
);***
требует знания PID процесса ... поэтому скорее всего PID известен и все решаемо описанными выше функциями
О мудрейший Гесер! предлагаю создать раздел на форуме для разработчиков. Вот под такие вот топики...
А нужно? Есть же вроде крутые форумы по С++
С тулхелпом вроде все понятно, только соответствующее поле структуры PROCESSENTRY32 (или как-то так, пишу по памяти) заполняется именем файла, а не полным именем, включающим path к нему...
под ХП тебе придется для кожлого процесса считывать еще и MODULEENTRY32 и уже там 1 модулем будет полное имя процесса
С тулхелпом вроде все понятно, только соответствующее поле структуры PROCESSENTRY32 (или как-то так, пишу по памяти) заполняется именем файла, а не полным именем, включающим path к нему...
typedef struct tagPROCESSENTRY32 {
DWORD dwSize;
DWORD cntUsage;
DWORD th32ProcessID;
DWORD th32DefaultHeapID;
DWORD th32ModuleID;
DWORD cntThreads;
DWORD th32ParentProcessID;
LONG pcPriClassBase;
DWORD dwFlags;
char szExeFile[MAX_PATH];
} PROCESSENTRY32;
szExeFile Path and filename of the executable file for the process.
тебе нужен именно szExeFile
vBulletin® v4.2.5, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot