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ń.
Widzę, że znasz już wspaniały język Autohotkey;). Użyłbym:
Jeśli masz więcej pytań, zdecydowanie powinieneś zadać je na forum autohotkey.
źródło
To może nie być tak skomplikowane jak niektóre, ale oto, czego używam do uruchamiania większości moich programów. Przełącznik pozwala zminimalizować okno, jeśli jest już aktywne.
źródło
W ten sposób sam rozwiązałem ten problem. https://superuser.com/a/1405409/997992 W oryginalnym poście zapomniałem wspomnieć, że korzystam z dodatku do systemu Windows o nazwie rzeczywistego menedżera systemu Windows, dlatego mam tam dodatkową kontrolę z WinExist dla faktycznego menedżera okien LUB explorer.exe.
Mam nadzieję że to pomoże.
źródło