指定ホットキーで指定ウィンドウをアクティブにする (AutoHotkey)

Alt + Tab で切り替えるのは面倒くさい。特定のホットキーで一発で切り替えられたら便利だ。AutoHotkey でサクっと実現できることがわかった。

実現したいこと

  • Win + 1 で秀丸エディタをアクティブにする
  • Win + 2 で Firefox をアクティブにする
  • Win + 3 で秀丸エディタ(のうち .ahk ファイルを開いているウィンドウ)をアクティブにする

スクリプト例

; ウィンドウアクティブ化時にタスクバーアイコンが点滅する現象が起こらなくなる
#WinActivateForce

#1::
  WinActivate, ahk_exe hidemaru.exe
return

#2::
  SetTitleMatchMode,2
  WinActivate, Mozilla Firefox
return

#3::
  SetTitleMatchMode,2
  WinActivate, .ahk ahk_exe hidemaru.exe
return

解説

基本的なアイデア:

  • リマップにより「指定キーを押すと指定コマンドを実行する」設定を登録
    • 指定キー = Win+1 など
    • 指定コマンド = 指定ウィンドウをアクティブにする命令
  • 指定ウィンドウのアクティブは WinActivate コマンドで行う

WinActivate は「指定したウィンドウをアクティブにする」コマンド。

問題は「指定したウィンドウ」をどうやって指定するかだが、色々ある。詳しい解説は以下に譲るとして、

ここでは三種類ほど。

WinActivate, ahk_exe hidemaru.exe

上記は実行ファイルによる指定。秀丸エディタは hidemaru.exe。

SetTitleMatchMode,2
WinActivate, Mozilla Firefox

上記はウィンドウタイトルの部分一致による指定。Firefox のウィンドウタイトルに必ず含まれる「Mozilla Firefox」を指定している。

ちなみに一致判定はデフォでは前方一致なので、SetTitleMatchMode にて部分一致(=2)にしている。なお、SetTitleMatchMode はリマップの内側に書く必要がある。

; これは動作しない。
SetTitleMatchMode,2

#2::
  ; ★こっちに書く必要がある
  WinActivate, Mozilla Firefox
return

最後に、もう一例。

SetTitleMatchMode,2
WinActivate, .ahk ahk_exe hidemaru.exe

上記は「ウィンドウタイトルに .ahk を含む」 かつ 「実行ファイル名が hidemaru.exe」にマッチする。秀丸エディタは今開いているファイルのファイル名をウィンドウタイトルに表示するので、上記は結局「ahk ファイルを開いている秀丸エディタウィンドウ」を示すことになる。

おわりに

Alt + Tab から脱却できそう。

p.s. そういえば以前、Win + Cursor ベースでウィンドウを切り替えるツールをつくったりしたが、結局使ってない。。。

stakiran.hatenablog.com