Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Prozesse auflisten mit Icon (https://www.delphipraxis.net/65657-prozesse-auflisten-mit-icon.html)

Zacherl 19. Mär 2006 16:19


Prozesse auflisten mit Icon
 
Hi,
wie bekomme ich anhand der ProcessID Zugriff auf das SmallIcon Handle eines Prozesses?
Ich möchte alle Prozesse auflisten und jeweils das SmallIcon in einer Imagelist speichern.
Mit den Funktionen der Unit TlHelp32 kann man ja alle Prozesse listen und bekommt auch eine PID.

Florian

Zacherl 21. Mär 2006 13:07

Re: Prozesse auflisten mit Icon
 
Ich weiß, dass es geht, nur nicht wie ...

Luckie 21. Mär 2006 13:34

Re: Prozesse auflisten mit Icon
 
Dazu brauchst du weniger die ProzessID als viel mehr den Pfad: MSDN-Library durchsuchenSHGetFileInfo.

The-X 21. Mär 2006 13:38

Re: Prozesse auflisten mit Icon
 
bei meinem Taskmanager Klon hab ich mir mit der PID den Pfad zum Prozess geholt und davon dann das Icon extrahiert

Zacherl 21. Mär 2006 13:59

Re: Prozesse auflisten mit Icon
 
Zitat:

Dazu brauchst du weniger die ProzessID als viel mehr den Pfad: SHGetFileInfo .
Schon klar.

Zitat:

Zitat von The-X
bei meinem Taskmanager Klon hab ich mir mit der PID den Pfad zum Prozess geholt und davon dann das Icon extrahiert

Wie holt man sich denn dem Pfad anhand der PID?
Wie man das Icon extrahiert weiß ich.

Luckie 21. Mär 2006 14:13

Re: Prozesse auflisten mit Icon
 
Steht doch dann in der Struktur drinne.

Zacherl 21. Mär 2006 14:13

Re: Prozesse auflisten mit Icon
 
Achso.
Danke

The-X 21. Mär 2006 18:35

Re: Prozesse auflisten mit Icon
 
unter XP ist das nur die halbe Wahrheit :stupid:
denn in dem Record von Process32First steht der Pfad zur Exe nicht drin
aber mit GetModuleFilenameEx nem geöffneten ProcessHandle (PROCESS_QUERY_INFORMATION or PROCESS_VM_READ) und Index 0 kommt man dem ganzen näher :mrgreen:

ErazerZ 21. Mär 2006 18:40

Re: Prozesse auflisten mit Icon
 
Zitat:

Zitat von The-X
unter XP ist das nur die halbe Wahrheit :stupid:
denn in dem Record von Process32First steht der Pfad zur Exe nicht drin
aber mit GetModuleFilenameEx nem geöffneten ProcessHandle (PROCESS_QUERY_INFORMATION or PROCESS_VM_READ) und Index 0 kommt man dem ganzen näher :mrgreen:

ja GetModuleFilenameEx gibts nur unter WinNT/2000/XP, deswegen benutz lieber Module32First

Delphi-Quellcode:
uses TLHelp32;

procedure TfrmMain.GetModuleList(PID: DWORD);
var
  ME: TModuleEntry32;
  hME: THandle;
  liModule: TListItem;
begin
  hME := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PID);
  ME.dwSize := sizeof(TModuleEntry32);
  Module32First(hMe, ME);
  repeat
    liModule := lvModules.Items.Add;
    liModule.Caption := ME.szModule;
    liModule.SubItems.Add(ME.szExePath);
  until (not Module32Next(hMe, ME));
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz