どーもヤマジです。
自由に自分の好きなショートカットキーを作成できるAutoHotkeyは大変便利ですが、新しく作ったショートカットキーが特定のアプリでは必要なかったり、逆に特定のアプリを開いている時だけ使いたいということもありますよね。
今回紹介するコードを使用すれば、こうした問題も解決できる上、同じショートカットキーをアプリ毎に異なる用途で使うことができるようになるので、非常に便利です。
やり方
#IfWinActive,ahk_exe アプリ名.exe
入力するキー1 & 入力するキー2::
Send, {出力するキー}
return
#IfWinActive
例えば、私の場合
- パワポを開いている時だけ
- CapslockキーとTを同時押ししたら
- CtrlキーとGを押したことにする(パワポ内のオブジェクトをグループ化させるショートカットキー)
という感じにしたいので、この場合のコードは
#IfWinActive,ahk_exe POWERPNT.EXE ;パワポを開いている時だけ
sc03A & t:: ;CapslockキーとTを同時押ししたら
Send, ^{g} ;CtrlキーとGを押したことにする
return
#IfWinActive
になります。
上述したコードの「ahk_exe アプリ名.exe」ですが、当然テキトーに書くと正しく動作しませんので、AutoHotkeyが認識している通りにアプリ名を記述する必要があります。
AHKのWindow Spyを開く
- タスクバー内のAutoHotkeyアイコンを右クリック
- メニューから[Window Spy]をクリック

ショートカットキーを動作させたいアプリを開き、Window Spyで名称を確認
- ショートカットキーを動作させたいアプリを開き、そのアプリウィンドウのどこかをクリック
- Window Spyの上から3行目の[ahk_exe ~.exe]が、このアプリのAutoHotkeyにおいての名称なので、これをコピペして今回のコードにぶち込む(この例では、パワポの名称が表示されている)

以上です。
今回紹介したコードを使えば、既にある自作ショートカットキーをアプリ毎に使いまわせるので、非常に便利です。
アプリによっては既にショートカットキーが割り当てられていたりするので、そことバッティングしないように設定したりもできます。
ナポリタン寿司さんという方が、今回紹介したコードをショートカットキーの例をコメント欄に書いてくださっているので、興味ある人はぜひこちらもご覧ください。
またナポリタン寿司さんは、便利なフリーソフトやWEBサービスについての記事をご自身のブログでとても分かりやすく書いてらっしゃいますので、PCの作業効率化などが好きな人は、ぜひこちらもチェックしてください!
それでは、最後まで読んでいただきありがとうございました。
おぉおーー!!早速記事にしてくださり感謝です。
毎度毎度非常に分かりやすくてとても勉強になります。
僕が試したコードでも問題なく動作していますが、やはりヤマジさんが紹介するちゃんとしたコードの書き方の方が綺麗でいいですね…。僕はいまいち「Return」について理解できてないんですが、恐らく必要なコマンドなんですよね…。
ということで、ここのコメント欄にてちゃんとした形のコードを書いときます。(他の方が混合しないように前のコメント削除してもらっても構いません)
;—-【Onenote】Ctrl+Dに日付挿入(Shift+Alt+D)割り当て—–
#IfWinActive,ahk_exe ONENOTE.EXE
^d::Send, +!d
return
#IfWinActive
;—-【Onenote】Ctrl+Tに時間挿入(Shift+Alt+T)割り当て—–
#IfWinActive,ahk_exe ONENOTE.EXE
^t::
Send, +!t
return
#IfWinActive
;—-【Onenote】Ctrl+Fに日付と時間挿入(Shift+Alt+f)割り当て—–
#IfWinActive,ahk_exe ONENOTE.EXE
^f::
Send, +!f
return
#IfWinActive
;—-【Excel】Ctrl+Dに日付挿入(Ctrl+;)割り当て—–
#IfWinActive,ahk_exe EXCEL.EXE
^d::
Send, ^;
return
#IfWinActive
;—-【Excel】Ctrl+Tに時間挿入(Ctrl+:)割り当て—–
#IfWinActive,ahk_exe EXCEL.EXE
^t::
Send, ^:
return
#IfWinActive
;—-【Excel】Ctrl+Fに日付と時間挿入(Ctrl+; & Ctrl+:)割り当て—–
#IfWinActive,ahk_exe EXCEL.EXE
^f::
Send, ^;{sc039}
Sleep, 100
Send, ^:
return
#IfWinActive