Моє розуміння того, як працює активація вікон, досить просте. Він відновлює останнє вікно цього типу. Така поведінка за замовчуванням робить кодування того, що ви хочете, дуже простим. Насправді я роблю щось майже ідентичне тому, що ви шукаєте, з двома простими кодовими блоками.
+#w::
SetTitleMatchMode, 2 ; approximate match
IfWinExist, - Microsoft Word
{
WinActivate, - Micrsoft Word
}
IfWinNotExist, - Microsoft Word
{
Run FullFilePathToMicrosoftWord
}
return
Я створив трохи цікавої синергії для роботи з декількома моніторами. Зауважте, що в Windows 7 утримуючи клавішу shift + windows та за допомогою стрілок для навігації вліво та вправо переміщати активне вікно між моніторами зі швидкістю світла. Тож я спробував щось трохи розумніше і накреслив слово для зрушення + вікно + ш. Він відновлює слово, якщо воно вже відкрите або запускає новий примірник, якщо ні. Краса підходу полягає в тому, що я ніколи не відпускаю зміну + ключ Windows. Роблячи це, я можу як активне / запустити слово, так і перемістити його в потрібне положення, використовуючи клавіші лівої стрілки вправо (вгору максимізується до речі, а вниз зменшиться до мінімуму). Map + # 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,
Примітка: Код, наведений вище, був лише адаптацією загального результату авторського сценарію. Це дещо зайве, але ефективне. Щоб знайти щось на кшталт вікна ahk_class, спробуйте скористатися вікном-шпигуном AutoIt3.
Якщо вам потрібно відкрити заголовок вікна, ви можете отримати активний заголовок, як показано у довідковому файлі прикладу ах
WinGetActiveTitle, Title
MsgBox, The active window is "%Title%".
Ще один трюк, який ви можете використовувати, - це встановити активний заголовок за допомогою WinSetTitle
Редагувати: Враховуючи, що у вас багато плаваючих примірників excel / word / powerpoint, також розгляньте можливість вирішити цю проблему за допомогою безкоштовної версії officetabs. Це дозволить вам зберігати всі відкриті файли excel в одному екземплярі, наприклад, замість того, щоб розміщуватися на панелі завдань.