Auflisten aller Fenster |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
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.
- Laufende Anwendung beenden
- Verwendung von CreateProcess
- Benachrichtigungen bei Fensterbewegungen abfangen
- Fenster auch im Client-Bereich verschieben
- Abfrage, bevor ein Programm/Formular geschlossen wird
- Ereignisreihenfolge beim Anzeigen eines Formulars
- Fenstergröße begrenzen
- Transparentes Fenster erzeugen
- Herausfinden, ob ein bestimmtes Programm gerade läuft
- Anwendung für eine bestimmte Zeit pausieren