ウィンドウのアクティブ化のしくみについての私の理解は非常に簡単です。そのタイプの最後に使用したウィンドウを復元します。このデフォルトの動作により、必要なコーディングが非常に簡単になります。実際、2つの単純なコードブロックを使用して、目的とほぼ同じことを行います。
+#w::
SetTitleMatchMode, 2 ; approximate match
IfWinExist, - Microsoft Word
{
WinActivate, - Micrsoft Word
}
IfWinNotExist, - Microsoft Word
{
Run FullFilePathToMicrosoftWord
}
return
複数のモニターを操作するために、少し興味深い相乗効果を生み出しました。Windows 7では、Shift + Windowsキーを押しながら矢印を使用して左右に移動すると、アクティブなウィンドウがモニター間を軽い速度で移動します。だから私は少し賢いものを試し、単語をシフト+ウィンドウ+ 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,
注:上記のコードは、オートスクリプトライターの一般的な出力を単に変更したものです。多少冗長ですが効果的です。ウィンドウのahk_classのようなものを見つけるには、AutoIt3ウィンドウスパイの使用を検討してください。
ウィンドウのタイトルを見つける必要がある場合、ahkサンプルヘルプファイルに示されているように、アクティブなタイトルを取得できます。
WinGetActiveTitle, Title
MsgBox, The active window is "%Title%".
使用できるもう1つのトリックは、WinSetTitleを使用してアクティブなタイトルを設定することです。
編集:excel / word / powerpointのインスタンスが複数存在する場合は、officetabs無料版で問題を解決することも検討してください。これにより、開いているすべてのExcelファイルを、たとえばタスクバーに散らばることなく、単一のインスタンスに保持できます。