ความเข้าใจของฉันเกี่ยวกับการทำงานของ Window Activation นั้นค่อนข้างเรียบง่าย จะเรียกคืนหน้าต่างที่ใช้ล่าสุดของประเภทนั้น พฤติกรรมเริ่มต้นนั้นทำให้การเข้ารหัสสิ่งที่คุณต้องการง่ายมาก ในความเป็นจริงฉันทำบางสิ่งบางอย่างเกือบเหมือนกับสิ่งที่คุณเป็นหลังจากนั้นด้วยบล็อกโค้ดแบบง่ายสองบล็อก
+#w::
SetTitleMatchMode, 2 ; approximate match
IfWinExist, - Microsoft Word
{
WinActivate, - Micrsoft Word
}
IfWinNotExist, - Microsoft Word
{
Run FullFilePathToMicrosoftWord
}
return
ฉันสร้างการทำงานร่วมกันที่น่าสนใจเล็กน้อยเพื่อทำงานกับจอภาพหลายจอ โปรดทราบว่าใน Windows 7 การกดแป้น Shift + windows และการใช้ลูกศรเพื่อเลื่อนไปทางซ้ายและขวาจะเป็นการย้ายหน้าต่างที่ใช้งานอยู่ระหว่างจอภาพที่ความเร็วแสง ดังนั้นฉันจึงลองใช้คำที่ฉลาดและแมปเพื่อเลื่อน + window + w จะเรียกคืนคำว่าเปิดอยู่แล้วหรือเรียกใช้อินสแตนซ์ใหม่ถ้าไม่ ความสวยงามของวิธีการคือฉันไม่ปล่อยปุ่ม Shift + windows โดยการทำเช่นนั้นฉันสามารถใช้งาน / เริ่มต้นคำและย้ายไปยังตำแหน่งที่ฉันต้องการโดยใช้ปุ่มลูกศรซ้ายขวา (ขึ้นจะเพิ่มโดยวิธีการลงและจะลดลง) แผนที่ + # r เพื่อคืนค่าหน้าต่างที่ใช้งานอยู่และคุณสามารถควบคุมหน้าต่างทั้งหมดที่คุณใช้งานได้อย่างง่ายดายโดยไม่ต้องใช้เมาส์ สิ่งที่คุณต้องจำไว้คือตัวอักษรตัวแรกของแอพที่คุณพยายามเปิดใช้งาน
เพื่อตอบคำถามของคุณเกี่ยวกับการทำให้สคริปต์เป็นแบบทั่วไปมากขึ้น:
1) พิจารณาใช้
; Allows you to search for an approximate window title match
SetTitleMatchMode, 2
; For example, you could do the following to activate any existing window with
; "- Microsoft Word" as part of the title
WinWait, - Microsoft Word,
IfWinNotActive, - Microsoft Word, , WinActivate, - Microsoft Word,
WinWaitActive, - Microsoft Word,
; some other code here once you have the window active
หรือความเป็นไปได้อื่น:
;Active the window by finding its ahk_class
WinWait, ahk_class OpusApp,
IfWinNotActive, ahk_class OpusApp, , WinActivate, ahk_class OpusApp,
WinWaitActive, ahk_class OpusApp,
หมายเหตุ: โค้ดด้านบนเป็นเพียงการปรับเอาท์พุททั่วไปของ autoscriptwriter มันค่อนข้างซ้ำซ้อน แต่มีประสิทธิภาพ ในการค้นหาบางสิ่งบางอย่างเช่น ahk_class ของหน้าต่างให้พิจารณาโดยใช้ Spy Window ของ AutoIt3
หากคุณต้องการค้นพบชื่อเรื่องของหน้าต่างคุณสามารถรับหัวเรื่องที่ใช้งานตามที่แสดงในไฟล์ช่วยเหลือตัวอย่าง ahk
WinGetActiveTitle, Title
MsgBox, The active window is "%Title%".
เคล็ดลับอีกอย่างที่คุณสามารถใช้คือการตั้งค่าหัวเรื่องที่ใช้งานโดยใช้ WinSetTitle
แก้ไข: เมื่อพิจารณาว่าคุณมี excel / word / powerpoint หลายอินสแตนซ์ลอยอยู่ให้พิจารณาแก้ไขปัญหาด้วย officetabs รุ่นฟรี มันจะช่วยให้คุณเก็บไฟล์ excel ที่เปิดอยู่ทั้งหมดในอินสแตนซ์เดียวตัวอย่างเช่นแทนที่จะเกลื่อนกลาดเกี่ยวกับทาสก์บาร์