Автор
|
Тема: Как получит полный путь к файлу запущенного процесса
|
Wander |
опубликован 25-05-2001 11:27 MSK
Как получит полный путь к файлу запущенного процесса, только чтобы работало под NT,CreateToolhelp32Snapshot под 98 работает , а под NT нет.
|
Ursus
|
опубликован 25-05-2001 14:17 MSK
У меня это делалось такhmodule = GetModuleHandle(NULL); GetModuleFileName(hmodule,psz_file_name,MAX_PATH + 1); |
Ursus
|
опубликован 25-05-2001 14:23 MSK
ДА забыл добавить, что это получения для собственного процесса. |
Wander
|
опубликован 26-05-2001 12:58 MSK
Не мне надо для других процессов |
breeder
|
опубликован 28-05-2001 10:07 MSK
Под NT удобно пользоваться PSAPI EnumProcesses EnumProcessModules и потом GetModuleFileName |
Wander
|
опубликован 29-05-2001 08:03 MSK
Это я уже знал, ЛЮДИ ПОЖАЛУЙСТА, дайте пример, а то я уже очень долго с этим делом парюсь ни как не могу разобратся, если не трудно на мыльте маленький пример без всяких наворотов, взять процесс получить путь. ПОЖАЛУЙСТА. |
breeder
|
опубликован 29-05-2001 08:54 MSK
#define MAXPCOUNT 40960 DWORD PIDs[MAXPCOUNT]; DWORD PNeededCount=0; EnumProcesses(PIDs,sizeof PIDs),&PNeededCount); for ( int i=0;i<PNeededCount/sizeof(DWORD);i++ ) { HANDLE PHandle=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,0,PIDs[i]); if ( PHandle ) { #define MAXMCOUNT 40960 HMODULE Modules[MAXMCOUNT]; DWORD MNeededCount; if ( EnumProcessModules(PHandle,Modules,sizeof(Modules),&MNeededCount) ) { for ( int j=0;j<PNeededCount/sizeof(HMODULE);j++ ) { #define MAXSTRLEN 40960 char Str[MAXSTRLEN]; if ( GetModuleFileName(PHandle,Modules[j],Str,MAXSTRLEN) ) { // получили имя модуля } } } CloseHandle(PHandle); } }Если нужен только экзешник, убираешь цикл по Modules и используешь только Modules[0] |
vladil
|
опубликован 29-05-2001 20:03 MSK
Try method GetCurrentDirectory() |
Wander
|
опубликован 30-05-2001 07:51 MSK
Всё я разобрался, всем спасибо!!! |
Ursus
|
опубликован 30-05-2001 16:38 MSK
2vladil Не всегда поможет, путь к файлу и тукешая директория разные вещи :) |