Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2009, 09:17   #1
abyss_by
Пользователь
 
Аватар для abyss_by
 
Регистрация: 24.03.2009
Сообщений: 12
По умолчанию Узнать полный путь к процессу в Vista

Необходимо ListView заполнять как список текущих процессов, выдирать иконки этих процессов, пути к ним и получать некоторую инфу о самих модулях. Всё элементарно, кроме самого главного - получить полный путь. Облазил весь форум, есть много подобных решений, но...
Пользуюсь подобным кодом:
Код:
uses TlHelp32;

function GetModulePath(PID:Cardinal):string; //Получаем путь по PID и возвращаем его как string
var SnapMod:THandle;
    ModEntry:TModuleEntry32;
    ErrorCode:Integer;
begin
  SnapMod:=CreateToolhelp32Snapshot(TH32CS_SnapModule,PID);
  if SnapMod<>Invalid_Handle_Value then
  try
    ModEntry.dwSize:=SizeOf(TModuleEntry32);
    Module32First(SnapMod,ModEntry);
    Result:=(ModEntry.szExePath);
    Module32Next(SnapMod,ModEntry);
    finally
    CloseHandle(SnapMod)
  end
    else
    begin
      ErrorCode:=GetLastError;
      case ErrorCode of
      5:Result:='Deny Access';
      87:Result:='Invalid Parameter';
    else
      Result:='Can't get list! Error No-'+IntToStr(ErrorCode)
    end;
    end;
  end;
Все почти хорошо в ХР. Почти, потому что не удается получить путь к, допустим "AVP.exe". В Vista вообще лажа, добрая половина процессов - 'Deny Access' Помогите плиз, запарило уже. Может кто подскажет куда копать хотя бы!?
abyss_by вне форума Ответить с цитированием
Старый 26.03.2009, 01:51   #2
abyss_by
Пользователь
 
Аватар для abyss_by
 
Регистрация: 24.03.2009
Сообщений: 12
По умолчанию

Сам нашел немного получше. В ХР теперь никаких проблем - полный путь к любому процессу

Код:
uses
 tlhelp32, Psapi;
....................

function GetModulePath(PID: DWord): string;
 var
  cb: DWORD;
  I: Integer;
  ProcCount: Integer;
  hMod: HMODULE;
  hProcess: THandle;
  PIDArray: array [0..1023] of DWORD;
  ModuleName: array [0..300] of Char;

begin
  FillChar(ModuleName, SizeOf(ModuleName), #0);
  EnumProcesses(@PIDArray, SizeOf(PIDArray), cb);
   ProcCount := cb div SizeOf(DWORD);
  for I := 0 to ProcCount - 1 do
   begin
    hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
                            False, PIDArray[I]);
   if (hProcess <> 0) then
   begin
     EnumProcessModules(hProcess, @hMod, SizeOf(hMod), cb);
     GetModuleFilenameEx(hProcess, hMod, ModuleName, SizeOf(ModuleName));
     if PID = PIDArray[I] then
     Result:= ModuleName;
     CloseHandle(hProcess);
   end;
   end;

end;
а с Вистой все тож самое Неужели никто не знает?

Последний раз редактировалось abyss_by; 26.03.2009 в 01:52. Причина: Убрал "лишнее"
abyss_by вне форума Ответить с цитированием
Старый 27.03.2009, 08:52   #3
abyss_by
Пользователь
 
Аватар для abyss_by
 
Регистрация: 24.03.2009
Сообщений: 12
По умолчанию

Тема закрыта, остался только интерес. В Vista фильтрую системные процессы, к которым не достучаться и в принципе не нужно отображать. Сорри за флуд.
abyss_by вне форума Ответить с цитированием
Старый 26.03.2010, 11:47   #4
SheriffVRN
Новичок
Джуниор
 
Регистрация: 02.12.2009
Сообщений: 1
По умолчанию

спасибо большое)
SheriffVRN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из процесса получить полный путь к ехе файлу. Ozerich Общие вопросы Delphi 4 08.08.2008 12:12
Как узнать полный путь к *.ехе файлу SeЯgey Помощь студентам 3 27.05.2008 09:46
Как получить полный путь к файлу, который был послан на принтер? Stilet Общие вопросы Delphi 7 29.02.2008 17:49
как узнать путь запущенного сервиса Alar Общие вопросы Delphi 0 30.10.2006 11:18
как в memo выводит полный путь к файлу? Файлом является данная программа. Alar Компоненты Delphi 0 29.10.2006 23:24