AutoHotkeyの使い方5ーウィンドウ・ソフトごとに動作を変えるー

こんにちは、チケットは取れているのに延期していたライブの日取りがやっと決まってワクワクしている生焼けです。

今回はAutoHotkeyでウィンドウ名・ソフトごとにショートカットキーの動作を変える方法を解説します。

前回の記事&関連記事

よく使う修飾キーの表

キー指定の記号意味
^Ctrl
+Shift
!Alt
#Windowsキー
スポンサーリンク

書き方

例えば、あるソフトだけで動作するショートカットキーを作りたい時どうするかというと…

#IfWinActive ウィンドウの指定

#IfWinActive

使いたいショートカットキーを囲むだけです。

具体的に書くと、

#IfWinActive ahk_exe Illustrator.exe

^+!a::
Send,b
return

^+!b::
Send,b
return

#IfWinActive

のような感じです。

ウィンドウの指定の仕方

基本的には

#IfWinActive 種類 名前

のように書きます。それぞれの間にはスペースを入れてください

タイトルだけは”#IfWinActive”の種類を書かずにスペースを空けるだけでそのまま書けば大丈夫です。

種類名前例(Chromeの場合)
(なし)タイトル名新しいタブ – Google Chrome
ahk_classクラス名Chrome_WidgetWin_1
ahk_exe実行ファイル名chrome.exe

タイトル名やクラス名についての解説や取得の仕方は後ほど説明します。

タイトル名の書き方

#IfWinActive 新しいタブ - Google Chrome

注意点

上のようにタイトル名の中にスペースが入っていても問題なく認識します。

ただし、“,”と”%”だけは ` でエスケープしないとエラーがでてしまいます

下はAmazonのTOPページのタイトル名です。”,”が入ってしまっているのでAはエラーになりますがBのように直前にこの記号を入れることで正常に動作します。

;A:ダメなやつ↓
Amazon | 本, ファッション, 家電から食品まで | アマゾン - Google Chrome

;B:OKなやつ↓
Amazon | 本`, ファッション`, 家電から食品まで | アマゾン - Google Chrome

ややこしいですが、このエスケープ文字はShift+7(‘)の方ではなく、Shift+@(`)の方です。

クラス名(ahk_class)の書き方

#IfWinActive ahk_class Chrome_WidgetWin_1

実行ファイル名(ahk_exe)の書き方

#IfWinActive ahk_exe chrome.exe

ウィンドウのタイトルの取得の仕方

スクリプトを起動させていると、タスクトレイに緑色のHのアイコンが出ていると思います。

それを右クリックして出てくる中に「Window Spy」という怪しげな名前のものがあるので、それをクリックしてください。

すると下のようなウィンドウが出てきます

スペルミスしているのは気のせいです

強制的に最前面に表示されるので少し鬱陶しいですが、最小化や閉じるで消せるので安心してください。

これを最前面に出したまま、タイトルを取得したいウィンドウをアクティブにします(クリックすればOK)

すると、“Window Title,Class and Process”の欄に現在のウィンドウの情報が現れます

スペルミスしているのは気のせいじゃないです

これらのいずれかを「ウィンドウの指定」の部分に記述します。

それぞれにメリットとデメリットがあるので解説していきます。

タイトル名

先程の画像でいうと”syortcutkey.ahk – メモ帳”がタイトル名です。大抵はウィンドウの左上に書いてある文字がタイトル名となります。

これを指定するメリットは同じソフトや実行ファイルでもタイトルが違えば、動作を変えられるというところです。

例えば、同じChromeでもサイトによって動作を変える…みたいな事ができます。

ただし、デフォルトでは条件が前方一致になっているので、その設定を変える必要がある場合もあります。(いつか解説します)

ahk_class クラス名

同じソフトでも複数ウィンドウがあるものだと、それぞれウィンドウごとにクラス名が違ったりします。

Photoshopなどでメイン画面のクラス名はPhotoshopですが、色調補正や別名保存などのウィンドウではまた違ったクラス名が割り当てられています。

同じソフトでも、クラス名によって違うショートカットキーを使いたいとき…とかに使えます。

また、タイトル名でも実行ファイル名で指定してもだめな時、クラス名で指定したらいけた!みたいなときもあります

ちょっと前はPhotoshopでAutoHotkeyがうまく動かなかったのですが、クラス名で指定すればいけたことがありました。(今は大丈夫そう?)

ahk_exe 実行ファイル名

とりあえず、ソフトごとに使いわけたい!って時はこれを選べば大丈夫です。

たまーに、この指定の仕方でうまく行かない時があるので、そのときはクラス名を使ってみてください。

おまけ ahk_pid ウィンドウのハンドル

ソフトを起動するたびに数字が異なります。つまり、今回のウィンドウの指定の場合は使えません。

細かく使い分けたい場合

どのソフトでも使いたいショートカットキーがある場合

どんなときも作動するショートカットキーをつくりたい場合は、

#IfWinActive ahk_exe Illustrator.exe

^+!a::
Send,b
return

^+!b::
Send,b
return

#IfWinActive

^+!c::
Send,b
return

のように書くと、^+!aと^+!bはイラレだけで動き、^+!cはイラレでもほかのソフトでも何も起動してなくても動作します。

複数書きたい時

もちろんいくつでも指定できるので

;イラレ用
#IfWinActive ahk_exe Illustrator.exe

^+!a::
Send,b
return
#IfWinActive


;Photoshop用
#IfWinActive ahk_exe Photoshop.exe

^+!b::
Send,b
return

#IfWinActive


;全般用
^+!c::
Send,b
return

のように増やしていけば大丈夫です。

“IfWinActive”を最後に書くのを忘れないように!

優先順位は?

何も指定しない<“IfWinActive~”で指定

何も指定せずに書いたものより、”IfWinActive~”で指定した方が優先されます。

どちらも”IfWinActive~”で指定

重複する条件だった場合、上に書いてあるものが優先されます。

例えば、下のように「Chromeで動くショートカットキー」と「Chromeで表示したAmazonのTopページで動くショートカットキー」が存在する時は、上に書いてあるChromeの方が優先されます。

;Chrome用
#IfWinActive ahk_exe chrome.exe

^+a::
send,1
return

#IfWinActive 


;AmazonTOPページ用
#IfWinActive Amazon | 本`, ファッション`, 家電から食品まで | アマゾン - Google Chrome

^+a::
send,5
return

#IfWinActive

上の場合、AmazonのTOPページでもほかのサイトでもCtrl+Shift+Aを押せば1と表示される。

Amazonと他のページで動作を変えたい場合は、Amazonを上に書きます。

;AmazonTOPページ用
#IfWinActive Amazon | 本`, ファッション`, 家電から食品まで | アマゾン - Google Chrome

^+a::
send,5
return

#IfWinActive 

;Chrome用
#IfWinActive ahk_exe chrome.exe

^+a::
send,1
return

#IfWinActive

これで、Ctrl+Shift+Aを押した場合、AmazonサイトのTOPでは5と入力され、ほかのサイトでは1と表示されるようになります。

まとめ

今回はウィンドウのタイトルやソフトによって動かすショートカットキーを変える方法をまとめました。

これで、AutoHotkeyの基本的な機能についての説明は終わりです。

また、色々なコマンドやほかの機能についても解説していくので気になった方はまた見てみて下さい。

日本語版Wiki

AutoHotkeyJp
タイトルとURLをコピーしました