मैं AHK में फ़ोकस खोने / प्राप्त करने वाली विंडो पर कैसे प्रतिक्रिया करूं?


0

मैं गिल्ड वॉर्स 2 खेलता हूं और उन वस्तुओं के नाम दिखाने के लिए एक फ़ंक्शन है जिनके साथ बातचीत की जा सकती है, लेकिन कुंजी को नीचे रखना होगा। मैं इसे एक टॉगल में बना रहा हूं, लेकिन मैं चाहूंगा कि इसे खिड़कियों के बीच आगे और पीछे स्वैप करने के बाद भी काम किया जाए।

F3 के इन-गेम के लिए फ़ंक्शन को रीबाइंड करने के बाद, कुंजी को टॉगल करना इस स्क्रिप्ट की तरह सरल है:

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

हालाँकि, जब विंडो फ़ोकस खोती है, तो मैं मान रहा हूँ कि जब यह फ़ोकस प्राप्त करता है, तो कुंजी को नीचे रखा जाता है, मुझे इसके लिए दो बार टॉगल को हिट करने की आवश्यकता होती है, जो मैं फिर से दिखाना चाहता हूँ।

आदर्श रूप से, मैं कुंजी को जारी करने का एक तरीका चाहता हूं जब खिड़की फोकस खो देती है और फिर से दबाया जाता है जब खिड़की फिर से फोकस करती है। मैं इसे कैसे पूरा करूंगा?

जवाबों:


0

आप एक अलग लूप में WinActive स्थिति को प्रदूषित कर सकते हैं और फिर सक्रिय विंडो में परिवर्तन होने पर कार्रवाई कर सकते हैं। वैकल्पिक रूप से आप अभी भी एक अलग लूप का उपयोग कर सकते हैं, लेकिन आवश्यकतानुसार कार्रवाई करने के लिए WinWaitNotActive और WinWaitActive का उपयोग करें। दूसरे शब्दों में, आप यह देखने के लिए जांचते हैं कि कौन सी विंडो सक्रिय है (वर्तमान में सक्रिय विंडो प्राप्त करें) और फिर कुछ और करने से पहले उसके सक्रिय न होने की प्रतीक्षा करें। एक बार जब यह सक्रिय नहीं होता है, तो आप सक्रिय विंडो के लिए फिर से जांच करते हैं, अगर यह सही विंडो है तो कुछ उपयुक्त करें, और फिर उस विंडो के इंतजार में अब सक्रिय न हों।

F3 सक्षम होने पर ही अलग लूप को सक्रिय करने के लिए, आप अलग-अलग रूटीन के दोहराए गए निष्पादन को सक्षम / अक्षम करने के लिए SetTimer का उपयोग कर सकते हैं, या केवल एक साझा चर का उपयोग कर सकते हैं, जिसे बार-बार चेक किया जाता है, जहां एक ही समय में साझा चर स्थिति बदल जाती है। आपके द्वारा पोस्ट किए गए कोड में F3 ऊपर या नीचे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.