Rozumiem, jak działa aktywacja systemu Windows, jest dość prosta. Przywraca ostatnio używane okno tego typu. To domyślne zachowanie sprawia, że kodowanie tego, co chcesz, jest bardzo proste. W rzeczywistości robię coś prawie identycznego z tym, czego szukasz, za pomocą dwóch prostych bloków kodu.
+#w::
SetTitleMatchMode, 2 ; approximate match
IfWinExist, - Microsoft Word
{
WinActivate, - Micrsoft Word
}
IfWinNotExist, - Microsoft Word
{
Run FullFilePathToMicrosoftWord
}
return
Stworzyłem trochę interesującej synergii do pracy z wieloma monitorami. Pamiętaj, że w systemie Windows 7 przytrzymanie klawisza Shift + Windows i poruszanie się w lewo i w prawo za pomocą strzałek spowoduje szybkie przesuwanie aktywnego okna między monitorami. Więc spróbowałem czegoś sprytnego i zamapowanego słowa do shift + okno + w. Przywraca słowo, jeśli jest już otwarte lub uruchamia nową instancję, jeśli nie. Piękno tego podejścia polega na tym, że nigdy nie puszczam klawisza Shift + Windows. W ten sposób mogę zarówno aktywować / uruchamiać słowo, jak i przesuwać je dokładnie do żądanej pozycji za pomocą klawiszy lewej strzałki w prawo (góra przy okazji maksymalizuje, a dół minimalizuje). Map + # r, aby przywrócić aktywne okno i całkowicie kontrolować wszystkie okna, których normalnie używasz bez wysiłku. Musisz tylko pamiętać o pierwszej literze aplikacji, którą próbujesz aktywować.
W odpowiedzi na twoje pytanie dotyczące uczynienia skryptu bardziej ogólnym:
1) Rozważ użycie
; 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
Lub inna możliwość:
;Active the window by finding its ahk_class
WinWait, ahk_class OpusApp,
IfWinNotActive, ahk_class OpusApp, , WinActivate, ahk_class OpusApp,
WinWaitActive, ahk_class OpusApp,
Uwaga: powyższy kod był tylko adaptacją ogólnych danych wyjściowych autoscriptwriter. Jest nieco zbędny, ale skuteczny. Aby znaleźć coś w rodzaju ahk_class okna, rozważ użycie szpiega okien AutoIt3.
Jeśli chcesz odkryć tytuł okna, możesz uzyskać tytuł aktywny, jak pokazano w przykładowym pliku pomocy ahk
WinGetActiveTitle, Title
MsgBox, The active window is "%Title%".
Inną sztuczką, której możesz użyć, jest ustawienie aktywnego tytułu za pomocą WinSetTitle
Edycja: Biorąc pod uwagę, że masz wiele wystąpień programu Excel / Word / Powerpoint, możesz również rozważyć rozwiązanie tego problemu w bezpłatnej edycji officetabs. Pozwoli ci to przechowywać wszystkie otwarte pliki programu Excel w jednej instancji, na przykład, zamiast rozrzucać się po pasku zadań.