Mein Verständnis der Funktionsweise der Fensteraktivierung ist ziemlich einfach. Es stellt das zuletzt verwendete Fenster dieses Typs wieder her. Dieses Standardverhalten macht das Codieren sehr einfach. Tatsächlich mache ich mit zwei einfachen Codeblöcken etwas, das fast identisch mit dem ist, wonach Sie suchen.
+#w::
SetTitleMatchMode, 2 ; approximate match
IfWinExist, - Microsoft Word
{
WinActivate, - Micrsoft Word
}
IfWinNotExist, - Microsoft Word
{
Run FullFilePathToMicrosoftWord
}
return
Ich habe eine interessante Synergie geschaffen, um mit mehreren Monitoren zu arbeiten. Beachten Sie, dass unter Windows 7 das aktive Fenster mit Lichtgeschwindigkeit zwischen den Monitoren verschoben wird, wenn Sie die Umschalttaste + die Fenstertaste gedrückt halten und mit den Pfeilen nach links und rechts navigieren. Also habe ich etwas kluges und zugeordnetes Wort ausprobiert, um + Fenster + w zu verschieben. Es stellt das Wort wieder her, wenn es bereits geöffnet ist, oder führt eine neue Instanz aus, wenn nicht. Das Schöne an diesem Ansatz ist, dass ich Shift + Windows-Taste nie loslasse. Auf diese Weise kann ich das Wort sowohl aktivieren / starten als auch mit den Pfeiltasten nach links und rechts genau an die gewünschte Position verschieben (nach oben wird übrigens maximiert und nach unten wird minimiert). Map + # r, um das aktive Fenster wiederherzustellen, und Sie steuern alle Fenster, die Sie normalerweise mühelos verwenden, vollständig ohne die Maus. Sie müssen sich nur an den ersten Buchstaben der App erinnern, die Sie aktivieren möchten.
Als Antwort auf Ihre Frage, ob das Skript allgemeiner gestaltet werden soll:
1) Erwägen Sie die Verwendung
; 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
Oder eine andere Möglichkeit:
;Active the window by finding its ahk_class
WinWait, ahk_class OpusApp,
IfWinNotActive, ahk_class OpusApp, , WinActivate, ahk_class OpusApp,
WinWaitActive, ahk_class OpusApp,
Hinweis: Der obige Code war nur eine Anpassung der generischen Ausgabe des Autoscriptwriters. Es ist etwas überflüssig, aber effektiv. Um so etwas wie die ahk_class eines Fensters zu finden, sollten Sie AutoIt3 Window Spy verwenden.
Wenn Sie den Titel eines Fensters ermitteln müssen, können Sie den aktiven Titel abrufen, wie in der ahk-Beispielhilfedatei gezeigt
WinGetActiveTitle, Title
MsgBox, The active window is "%Title%".
Ein weiterer Trick, den Sie verwenden können, besteht darin, den aktiven Titel mit WinSetTitle festzulegen
Bearbeiten: Angesichts der Tatsache, dass mehrere Instanzen von Excel / Word / Powerpoint im Umlauf sind, sollten Sie dieses Problem auch mit der kostenlosen Version von officetabs lösen. So können Sie beispielsweise alle geöffneten Excel-Dateien in einer einzigen Instanz behalten, anstatt über die Taskleiste zu streuen.