ฉันต้องการสคริปต์ AutoHotKey ที่รอหน้าต่างใดหน้าต่างหนึ่งแล้วส่งการกดแป้นไปที่หน้าต่างนั้น อย่างไรก็ตามเนื่องจากการรอจะเสร็จสิ้นในลูปจึงมีการส่งคีย์ซ้ำแล้วซ้ำอีก
สมมติว่าฉันต้องการรอ Windows Calculator จากนั้นส่ง "12345" ไป ความพยายามครั้งแรกของฉันคือ:
#SingleInstance force
Loop
{
WinWaitActive, Calc
{
Send, 12345
}
เห็นได้ชัดว่าสคริปต์นี้ส่ง "12345" ซ้ำแล้วซ้ำอีกเนื่องจากฉันไม่ได้แยกจากลูป
ถ้าฉันแทรก "ตัวแบ่ง" ตามหลังคำสั่ง send การวนรอบจะสิ้นสุดลง แต่สคริปต์ก็เช่นกัน
รูปแบบมาตรฐานสำหรับการจัดการสิ่งนี้คืออะไร
สิ่งที่แน่นอนคือการห่วง? WinWaitActive ไม่ควรมีลูปภายในที่หยุดการทำงานของสคริปต์ชั่วคราวจนกว่าเงื่อนไขที่กำหนดไว้โดยฟังก์ชั่นจะกลายเป็นจริงในกรณีนี้จะดำเนินการคำสั่งในวงเล็บหรือไม่
—
MaQleod
ฉันใส่วนซ้ำเพื่อป้องกันสคริปต์จากการยกเลิก บางทีการขาดความเข้าใจของฉันก็คือวิธีการจัดโครงสร้างสคริปต์ AutoHotKey (ดังนั้นพวกเขาจึงไม่ยุติตัวอย่าง) แทนที่จะทำในสิ่งที่ฉันพยายามทำที่นี่ ฉันจะให้สคริปต์ทำงานต่อไปได้อย่างไรเพื่อให้มันทำงานต่อไปได้?
—
Robert
ลูปจะทำให้มันทำงานได้ดีและถ้าคุณใช้โครงสร้างแบบนั้นคุณต้องมีเงื่อนไขภายในลูปเพื่อให้ทำงานผ่านฟังก์ชัน WinWaitActive หากไม่ได้ใช้งาน Calc อยู่แล้ว ด้วยวิธีนี้ถ้ามันใช้งานอยู่มันจะข้ามการเรียกใช้ฟังก์ชันนั้นซ้ำ ๆ จนกว่าคุณจะคลิกปิดการคำนวณแล้วมันจะเปิดใช้งานสคริปต์อีกครั้งเพื่อรอจนกว่าการคำนวณจะเปิดใช้งานอีกครั้ง
—
MaQleod