Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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 Путь: ??????????
вместо пути выводит вопросики.
а нужно получить полный список процессов, как во вкладке "процессы" в диспетчере,и пути к ним

Последний раз редактировалось Admin, 26.05.2012 в 23:45.
Ответить с цитированием
  #2  
Старый 26.05.2012, 23:32
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Char и WideChar.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 27.05.2012, 12:53
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

а что делать?
попробовал WideCharToString(me32.szExePath) но пишет несовместимость типов array and widechar
Ответить с цитированием
  #4  
Старый 27.05.2012, 22:10
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Проверял в 7-ке и XE2, нормально работает:
Код HTML:
uses PSAPI, TlHelp32; function TaskManager : String; var Wnd, pr : HWND; buff : array[0..127] of Char; pid : Cardinal; me32 : TModuleEntry32; begin Result := ''; Wnd := GetWindow(Form1.Handle, GW_HWNDFIRST); while Wnd <> 0 do begin if (Wnd <> Application.Handle) and (GetWindow(Wnd, GW_OWNER) = 0) and (GetWindowText(Wnd, buff, SizeOf(buff)) <> 0) then begin GetWindowText(Wnd, buff, SizeOf(buff)); Result := Result + #13#10'Программа: ' + buff + #9#9; 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; end; procedure TForm1.Button2Click(Sender: TObject); begin Memo1.Lines.Clear; Memo1.Lines.Add(TaskManager); end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:08.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025