meine Anwendung in den Vordergrund bringen?
Oft wird die Frage gestellt wie man die eigene Anwendung oder besser gesagt das Hauptfenster der Anwendung in den Vordergrund bringt. Genauso oft wird
Application.BringToFront oder
SetForegroundWindow als Antwort genannt. Diese Methoden sind nicht falsch nur haben sie den kleinen Nebeneffekt das seit Windows 98 nur noch der entsprechende Button in der Taskleiste blinkt und das Hauptfenster tortzdem im Hintergrund bleibt.
Die folgende Procedure setzt vorher den Eingabefokus auf die Anwendung und ruft erst dann SetForegroundWindow auf.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| Procedure ShowApplication; Var Thread1, Thread2: Cardinal; Begin Thread1 := GetCurrentThreadId; Thread2 := GetWindowThreadProcessId (GetForegroundWindow, nil); AttachThreadInput (Thread1, Thread2, true); Try SetForegroundWindow (Application.Handle); Finally AttachThreadInput (Thread1, Thread2, false); End; End; |
Zum testen reicht es einfach eine normale Anwendung mit einem Timer (Interval auf ca. 5000 [~ 5 Sec.] stellen) zu erstellen und im OnTimer Event die Procedure
ShowApplication aufzurufen:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Timer1Timer(Sender: TObject); begin ShowApplication; end; |
Moderiert von jasocul: Beitrag geprüft am 16.05.2006
[meta]Vordergund[/meta]