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