Показать сообщение отдельно
  #1  
Старый 26.05.2012, 23:30
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию Путь к exe по хендлу

Здравствуйте.
Вопрос вот в чём.
нашел в инете функцию которая выводит список запущенных процессов и путь к ехе файлам процессов по хендлу.
но функция не ко всем выводит путь
Код:
function TaskManager:string;
var
  Wnd,pr: hWnd;
  buff: array[0..127] of Char;
  pid: HINST;
  me32: TModuleEntry32;
begin
Result:='';
  Wnd := GetWindow(Forn1.Handle, gw_HWndFirst);
  while Wnd <> 0 do begin {Не показываем:}
    if (Wnd <> Application.Handle) and {-Собственное окно}
      //IsWindowVisible(Wnd) and {-Невидимые окна}
      (GetWindow(Wnd, gw_Owner) = 0)  {-Дочернии окна}
      and (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без заголовков}
      then begin
      GetWindowText(Wnd, buff, sizeof(buff));
      Result:=Result +#13'Программа:'+ StrPas(buff);
        GetWindowThreadProcessId(wnd, @pid);
        pr := CreateToolHelp32Snapshot(TH32CS_SNAPMODULE, pid);
        me32.dwSize := SizeOf(me32);
        Module32First(pr, me32);
         Result:=Result  +' Путь: '+ me32.szExePath;
        CloseHandle(pr);
    end;
    Wnd := GetWindow(Wnd, gw_hWndNext);
  end;
  //Memo1.ItemIndex := 0;
end;
для примера запустил диспетчер задач но в функции выведется
Программа:Windows Task Manager Путь: ??????????
вместо пути выводит вопросики.
а нужно получить полный список процессов, как во вкладке "процессы" в диспетчере,и пути к ним
Ответить с цитированием