ฉันจะตอบสนองต่อหน้าต่างที่สูญเสีย / รับโฟกัสใน AHK ได้อย่างไร?


0

ฉันเล่น Guild Wars 2 และมีฟังก์ชั่นเพื่อแสดงชื่อของรายการที่สามารถโต้ตอบได้ แต่ต้องกดปุ่มค้างไว้ ฉันเปลี่ยนมันเป็นสลับ แต่ฉันต้องการให้มันทำงานได้แม้หลังจากสลับไปมาระหว่างหน้าต่าง

หลังจาก rebinding ฟังก์ชั่นเป็น F3 ในเกมการสลับคีย์ดูเหมือนจะง่ายเหมือนสคริปต์นี้:

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

อย่างไรก็ตามเมื่อหน้าต่างไม่มีการโฟกัสฉันถือว่าปุ่มถูกระงับเนื่องจากเมื่อมันกลับมาโฟกัสฉันต้องกดปุ่มสลับสองครั้งเพื่อให้มันเริ่มแสดงสิ่งที่ฉันต้องการอีกครั้ง

โดยหลักการแล้วฉันต้องการวิธีที่จะปล่อยกุญแจเมื่อหน้าต่างสูญเสียโฟกัสและกดลงอีกครั้งเมื่อหน้าต่างกลับมาโฟกัส ฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


0

คุณสามารถสำรวจสถานะ WinActive ในวงแยกจากนั้นดำเนินการหากหน้าต่างที่ใช้งานมีการเปลี่ยนแปลง อีกวิธีหนึ่งคุณยังสามารถใช้วงแยก แต่ใช้ WinWaitNotActive และ WinWaitActive เพื่อดำเนินการตามที่ต้องการ ในคำอื่น ๆ คุณตรวจสอบเพื่อดูว่าหน้าต่างใดที่ใช้งานอยู่ (รับหน้าต่างที่ใช้งานอยู่ในปัจจุบัน) จากนั้นรอให้หน้าต่างไม่ทำงานก่อนที่จะทำสิ่งอื่น เมื่อไม่ได้ใช้งานอยู่คุณตรวจสอบหน้าต่างที่ใช้งานอีกครั้งทำสิ่งที่เหมาะสมถ้าเป็นหน้าต่างด้านขวาจากนั้นกลับไปที่รอให้หน้าต่างนั้นไม่ทำงานอีกต่อไป

ในการเปิดใช้งานลูปแยกต่างหากเมื่อเปิดใช้งาน F3 คุณสามารถใช้ SetTimer เพื่อเปิด / ปิดการใช้งานการทำซ้ำของรูทีนที่แยกต่างหากหรือใช้ตัวแปรที่แชร์ที่ตรวจสอบซ้ำแล้วซ้ำอีกโดยที่สถานะตัวแปรที่ใช้ร่วมกันจะเปลี่ยนสถานะในเวลาเดียวกัน F3 ขึ้นหรือลงในรหัสที่คุณโพสต์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.