Was ich tun möchte, ist zu überprüfen, ob meine Anwendung den Fokus hat, denn wenn es nicht ist, werde ich ein Benachrichtigungsfenster nur über dem Benachrichtigungsbereich anzeigen, um eine Nachricht an den Endbenutzer anzuzeigen.Wie kann ich überprüfen, ob meine Anwendung den Fokus hat?
Antwort
Rufen Sie Windows.GetForegroundWindow()
an und übergeben Sie dann die HWND
an die Controls.FindControl()
-Funktion. Es wird einen Zeiger TWinControl
nicht-Null zurückgeben, wenn die HWND
zu Ihrem Prozess gehört. Zum Beispiel:
if FindControl(GetForegroundWindow()) <> nil then
// has focus ...
else
// does not have focus ...
Wenn die Anwendung einer einzigen Form besteht, dann
GetForegroundWindow = Handle
genügt. Der obige Ausdruck ist genau dann wahr, wenn das Formular das Vordergrundfenster ist, dh wenn der Tastaturfokus zu einem Steuerelement in diesem Formular (oder zum Formular selbst) gehört.
Wenn Ihre Anwendung aus einer Reihe von Formularen besteht, durchlaufen Sie sie einfach und überprüfen Sie, ob sie mit GetForegroundWindow
übereinstimmen.
Eine leichte Abwandlung Remys Antwort ist:
Var
Win: TWinControl;
Begin
Win := FindControl(GetForegroundWindow);
if Win <> nil then
// StringGrid1.Row :=5;
// StringGrid1.SetFocus;
ok für mich zusammengestellt, aber ich fand es während der Debug-unzuverlässig wird die stringgrid.setfocus auch wenn das Fenster isn‘genannt t fokussiert, was einen Fehler verursacht.
D2007 hat diese nützliche Eigenschaft
if Application.Active then
//
- 1. Überprüfen, ob der Eingang den Fokus hat
- 2. Wie kann ich überprüfen, ob meine Element ID den Fokus hat?
- 3. Wie kann ich den Tastaturstatus erfassen, wenn meine Anwendung nicht den Fokus hat?
- 4. Selen: Überprüfen Sie, ob ein WebElement den Fokus hat
- 5. Testen, ob eine Eingabe den Fokus hat
- 6. C#: Erkennen, welche Anwendung den Fokus hat
- 7. Überprüfen Sie, ob ein Eingabefeld in Vanille JavaScript Fokus hat
- 8. Wie kann ich feststellen, ob ein Fenster den Fokus hat? (Win32-API)
- 9. Wie kann ich überprüfen, ob Zend_Form_Elements keine Dekorateure hat gesetzt
- 10. Überprüfen, ob die Variable den Wert '' hat
- 11. Wie kann ich überprüfen, ob meine Organisation eine vertrauenswürdige Windows-Binärdatei signiert hat?
- 12. Wie erkennt man, dass meine Anwendung den Fokus in Qt verloren hat?
- 13. Wie kann ich überprüfen, ob meine App Zugriff auf Handy-Galerie hat
- 14. Wie kann ich überprüfen, ob meine benutzerdefinierte ios8-Tastaturerweiterung einen offenen Zugriff hat?
- 15. Siehe, ob ContentEditable div Fokus hat
- 16. Überprüfen, ob Eingangselemente im Fokus sind
- 17. Wie kann ich meine svn-Verbindung überprüfen?
- 18. Cocoa einen Fokus auf meine Anwendung
- 19. Setzen Sie den Systemfokus auf meine Anwendung
- 20. Überprüfen, ob ein Linq IQueryable eine Reihenfolge nach Anwendung hat
- 21. Wie kann ich meine bereitgestellte Anwendung benennen?
- 22. Wie zu überprüfen, ob Anwendung läuft
- 23. Überprüfen, ob Android-Handler Rückrufe hat
- 24. Wie kann ich feststellen, welche TextBox zuletzt den Fokus hatte?
- 25. Wie kann man überprüfen, ob das Gerät den Vibrationsmodus im iOS programmatisch eingestellt hat oder nicht?
- 26. Wie kann ich meine Anwendung programmatisch aktualisieren?
- 27. Wie kann ich meine Anwendung integrieren?
- 28. Wie kann ich den Anfangswert der Gliederung wiederherstellen für: Fokus?
- 29. Android - Wie kann ich überprüfen, ob meine App geöffnet ist, wenn Sie eine Push-Benachrichtigung erhalten?
- 30. Wie überprüfe ich, ob meine Lösung nicht verwalteten Code hat?