Home » Tipps & Tricks » System » Prozesse » Auflisten aller Fenster
Auflisten aller Fenster
Es ist zwar möglich mit Hilfe einer Schleife über GetWindow eine solche Liste zu erstellen, die Methode ist jedoch fehleranfälliger, da man zum Teil in einer Endlosschleife landen kann oder ein Handle erhält, dessen Fenster bereits zerstört wurde.Die folgende Methode verwendet die Systenfunktion EnumWindows. Dabei wird dann die Callback Prozedur mit den entsprechenden Parametern aufgerufen.
function EnumWinProc(Wnd: THandle; LParam: LongInt): Boolean; stdcall; var WinCaption : string; Len: integer; begin Result := True; Len := GetWindowTextLength(Wnd); SetLength(WinCaption, Len); GetWindowText(Wnd, PChar(WinCaption), Len+1); if Trim(WinCaption) <> '' then Form1.Listbox1.Items.Add(Format('%.6x : %s', [Wnd, WinCaption])); end; procedure TForm1.Button1Click(Sender: TObject); begin EnumWindows(@EnumWinProc, 0); end;
In diesem Fall werden die Informationen in Listbox1 ausgegeben, die sich auf Form1 befinden muss.Zuerst wird eine sechsstellige Hex-Zahl ausgegeben, die das Handle des Fensters darstellt, dann wird der Titel ausgegeben.Die Ausgabe kann über die Parameter der Funktion Format angepasst werden.