WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Как получит полный путь к файлу запущенного процесса

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Как получит полный путь к файлу запущенного процесса
Wander опубликован 25-05-2001 11:27 MSK   Click Here to See the Profile for Wander   Click Here to Email Wander  
Как получит полный путь к файлу запущенного процесса, только чтобы работало под NT,CreateToolhelp32Snapshot под 98 работает
, а под NT нет.
Ursus опубликован 25-05-2001 14:17 MSK     Click Here to See the Profile for Ursus  Click Here to Email Ursus     
У меня это делалось так

hmodule = GetModuleHandle(NULL);

GetModuleFileName(hmodule,psz_file_name,MAX_PATH + 1);

Ursus опубликован 25-05-2001 14:23 MSK     Click Here to See the Profile for Ursus  Click Here to Email Ursus     
ДА забыл добавить, что это получения для собственного процесса.
Wander опубликован 26-05-2001 12:58 MSK     Click Here to See the Profile for Wander  Click Here to Email Wander     
Не мне надо для других процессов
breeder опубликован 28-05-2001 10:07 MSK     Click Here to See the Profile for breeder  Click Here to Email breeder     
Под NT удобно пользоваться PSAPI
EnumProcesses
EnumProcessModules
и потом
GetModuleFileName
Wander опубликован 29-05-2001 08:03 MSK     Click Here to See the Profile for Wander  Click Here to Email Wander     
Это я уже знал, ЛЮДИ ПОЖАЛУЙСТА, дайте пример, а то я уже очень долго с этим делом парюсь ни как не могу разобратся, если не трудно на мыльте маленький пример без всяких наворотов, взять процесс получить путь. ПОЖАЛУЙСТА.
breeder опубликован 29-05-2001 08:54 MSK     Click Here to See the Profile for breeder  Click Here to Email breeder     
#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     Click Here to See the Profile for vladil  Click Here to Email vladil     
Try method GetCurrentDirectory()
Wander опубликован 30-05-2001 07:51 MSK     Click Here to See the Profile for Wander  Click Here to Email Wander     
Всё я разобрался, всем спасибо!!!
Ursus опубликован 30-05-2001 16:38 MSK     Click Here to See the Profile for Ursus  Click Here to Email Ursus     
2vladil Не всегда поможет, путь к файлу и тукешая директория разные вещи :)

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.