Entwickler-Ecke

Windows API - Dateiname anhand Handle rausfinden


luckyluke84 - Mo 09.08.04 16:07
Titel: Dateiname anhand Handle rausfinden
Ich hab schon einige Bsp. zu dem Thema gefunden, jedoch nichts womit
ich was anfangen kann.
Hier ist eine von den Proceduren die ich zu tausenden gefunden hab.
Ich will aber von EINEM Handle, EINEN Dateinamen erhalten.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure CreateWin9xProcessList(List: TStringList); 
var 
  hSnapShot: THandle; 
  ProcInfo: TProcessEntry32; 
begin 
  if List = nil then 
    Exit; 
  hSnapShot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
  if (hSnapShot <> THandle(-1)) then 
  begin 
    ProcInfo.dwSize := SizeOf(ProcInfo); 
    if (Process32First(hSnapshot, ProcInfo)) then 
    begin 
      List.Add(ProcInfo.szExeFile); 
     while (Process32Next(hSnapShot, ProcInfo)) do 
       List.Add(ProcInfo.szExeFile); 
    end
    CloseHandle(hSnapShot); 
  end
end;

So hab ich die Procedure abgeändert :

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Function GetExeByHandle(Handle : HWND): String
var 
  hSnapShot: THandle; 
  ProcInfo: TProcessEntry32; 
begin 
  hSnapShot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
  if (hSnapShot <> THandle(-1)) then 
  begin 
    ProcInfo.dwSize := SizeOf(ProcInfo); 
    if (Process32First(hSnapshot, ProcInfo)) then 
    begin 
      Result := ProcInfo.szExeFile; 
    end
    CloseHandle(hSnapShot); 
  end
end;

Jetzt wird zwar noch nicht die Exe-Datei zu meinen Handle angezeigt,
aber ich hab erwartet das Zumindest etwas zurückgegeben wird. Aber
es wird immer "" zurückgegeben. Das Versteh ich nicht. Bitte helft mir!
Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt.


Delete - Mo 09.08.04 16:22

Laufe alle Prozesse durch und vergleiche immer das Prozesshandle mit deinem Handle.


maxk - Mo 09.08.04 16:53

...und verwende künftig Delphitags!


Delete - Mo 09.08.04 20:36

In den hiesigen FAQs hättest du einen Ansatz gefunden: klick [http://www.delphi-forum.de/topic_13858.html]. Und diesen Ansatz hat Nico in der DP verbessert [http://www.delphipraxis.net/post214156.html#214156].