Ich versuche eine Anwendung wie Launchy/Enso/etc. Zu erstellen, die erscheint, wenn der Benutzer die Feststelltaste drückt.Wie umgehen Sie die "Sperrung der Vordergrundsperre", um mein Fenster zu aktivieren?
Dazu musste ich einen Low-Level-Tastatur-Hook installieren (WH_KEYBOARD_LL
), aus dem ich dann einen Thread spawnen, um den Dialog anzuzeigen, um den Benutzer zu präsentieren.
Das Problem ist, wenn ich irgendwie Fokus stehlen (z. B. durch Klicken auf ein anderes Fenster) und anschließend Caps Lock mit einer kurzen Verzögerung, mein Fenster nicht die Tastatureingabe erhält: Der Eingang geht zum Hintergrundfenster, obwohl mein Fenster "aktiv" ist (aus dem Blick auf die Titelleiste).
Natürlich wird dies ziemlich ärgerlich, da ich dann so etwas wie „Visu“ eingeben Ende (für „Visual Studio“) in einem Textprozessor (oder eine Chat-Box ...) und die Eingabetaste drücken, withotu zu realisieren, dass es nicht das getan hat, was ich vorhatte.
(lustige Sache ist, nach einer 3-Sekunden (oder so) Pause, Titelleiste meines Fensters wird plötzlich „inaktiv“, auch wenn es nie aktiv in erster Linie war!)
Wie kann ich umgehen dieser "Schutz" Mechanismus zu eigentlich mein Fenster aktivieren?
Raymond Chen hat dies auf Old New Thing behandelt ... Sie müssen die Shell-Hotkey-Funktion verwenden, anstatt zu versuchen, den Fokus zu stehlen. –
@BenVoigt: Wie mache ich das mit Caps Lock, während die Eingabe unterdrückt wird? – Mehrdad
Ich schlage vor, Sie beginnen mit dem Lesen Raymonds gesamten "Wettrüsten" -Serie. [Hier ist der, auf den ich bereits hingewiesen habe] (http://blogs.msdn.com/b/oldnewthing/archive/2009/02/26/9445006.aspx). –