Wie reagiere ich auf ein Fenster, das in der AHK den Fokus verliert / gewinnt?


0

Ich spiele Guild Wars 2 und es gibt eine Funktion zum Anzeigen der Namen von Gegenständen, mit denen interagiert werden kann, aber die Taste muss gedrückt werden. Ich mache es zu einem Toggle, aber ich möchte, dass es funktioniert, auch nachdem ich zwischen den Fenstern hin und her gewechselt habe.

Nach dem erneuten Binden der Funktion an F3 im Spiel scheint das Umschalten der Taste so einfach zu sein wie das folgende Skript:

#IfWinActive Guild Wars 2
LAlt::
    if (GetKeyState("F3")) {
        Send, {F3 up}
    } else {
        Send, {F3 down}
    }
#IfWinActive

Wenn das Fenster jedoch den Fokus verliert, gehe ich davon aus, dass die Taste gedrückt gehalten wird, da ich, wenn es den Fokus wiedererlangt, zweimal auf den Umschalter drücken muss, um wieder zu zeigen, was ich will.

Im Idealfall möchte ich, dass die Taste losgelassen wird, wenn das Fenster den Fokus verliert und erneut gedrückt wird, wenn das Fenster wieder den Fokus erhält. Wie würde ich das erreichen?

Antworten:


0

Sie können den WinActive-Status in einer separaten Schleife abfragen und dann Maßnahmen ergreifen, wenn sich das aktive Fenster ändert. Alternativ können Sie auch eine separate Schleife verwenden, aber WinWaitNotActive und WinWaitActive verwenden, um nach Bedarf Maßnahmen zu ergreifen. Mit anderen Worten, Sie überprüfen, welches Fenster aktiv ist (rufen Sie das aktuell aktive Fenster ab) und warten, bis es nicht mehr aktiv ist, bevor Sie etwas anderes tun. Sobald es nicht mehr aktiv ist, prüfen Sie erneut, ob das aktive Fenster angezeigt wird, führen Sie die entsprechenden Schritte aus, wenn es sich um das richtige Fenster handelt, und warten Sie, bis dieses Fenster nicht mehr aktiv ist.

Um die separate Schleife nur zu aktivieren, wenn F3 aktiviert ist, können Sie mit SetTimer die wiederholte Ausführung einer separaten Routine aktivieren / deaktivieren oder einfach eine gemeinsam genutzte Variable verwenden, die wiederholt überprüft wird, wobei sich der Status der gemeinsam genutzten Variablen beim Senden ändert F3 nach oben oder unten in dem Code, den Sie gepostet haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.