Einzelnen Beitrag anzeigen

Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#1

FileName via WindowHandle

  Alt 28. Feb 2013, 15:05
Hallo zusammen,

ich sitz da an einem kleinem Problemchen

Ich frage mit der TWindowList Klasse alle Namen der offenen Fenster ab und trage sie in eine Liste ein. Nun möchte ich zusätzlich das Icon des Programms anzeigen, welches via Dateiname ermittelt werden soll. Um den Dateinamen zu ermitteln habe ich die Klasse um eine Property erweitert:

property FileNames[idx:Integer]:string read GetFileNames;
Delphi-Quellcode:
function TWindowList.GetFileNames(idx: Integer): string;
var
  szFileName: array[0..MAX_PATH] of Char;
begin
  FillChar(szFileName, SizeOf(szFileName), #0);
  if GetWindowModuleFileName(GetHandles(idx), szFileName, MAX_PATH) = 0 then
  begin
    RaiseLastOSError;
  end;
  result := szFileName;
end;
Nur leider wird anstatt des Pfades nur folgende Meldung angezeigt:
Code:
Ein Aufruf einer Betriebssystemfunktion ist fehlgeschlagen.
Was denk ich mal daran liegen wird, das hier ein WindowModule Handle erwartet wird und es aber ein Window Handle erhält.

Ein weiterer Versuch:
Delphi-Quellcode:
  procId := GetWindowThreadProcessId(GetHandles(idx));

  h := OpenProcess(PROCESS_ALL_ACCESS, false, procId);
Jedoch war das von OpenProcess zurückgegeben Handle immer 0.

Nun weiß ich nicht wie ich am besten an den Dateinamen des Fensters herkankomme.

Über Hilfe oder Alternativwege wäre ich dankbar

Gruß
pustekuchen
Delphi programming is awesome.
  Mit Zitat antworten Zitat