AutoHotkey の便利な使い方 おすすめスクリプト集 作業効率アップ!
こんにちは、べっちです。
昨日は、Windows でショートカットキーを自分で作れるフリーソフト、「AutoHotkey」をご紹介しました。
昨日のお話はコチラ
↓↓
「AutoHotkey」ショートカットキーを自分で作れるWindows便利アプリ
今日は、AutoHotkey を便利に使うためのスクリプトをいくつかご紹介します。
スクリプトの文法を覚えなくてもコピペで使えますので、気に入ったのがあったらぜひ使ってみて下さいね。
目次
- ウィンドウの最大化⇔元に戻す
- 同じアプリのウィンドウの切り替え
・同じアプリの次のウィンドウへ
・同じアプリの前のウィンドウへ - アプリが起動している場合にはアクティブにして、起動していない場合には起動
- 「変換」キーで IME を OFF にする、「カタカナひらがな」キーで IME を ON にする
ウィンドウの最大化⇔元に戻す
Windows って、マウスだとタイトルバーのダブルクリックでウィンドウの最大化と元に戻すを切り替えられますよね。
同じことをキーボードでも出来そうですが、似たようなことは出来ても全く同じ機能は Windows には用意されていません。
そこで、以下のスクリプトは、キーボードでも同様に、最大化と元に戻すを切り替えるスクリプトです。
Ctrl +「カタカナひらがな」で、ウィンドウの最大化と元に戻すを切り替えます。
; Ctrl + 「カタカナひらがな」で ウィンドウの最大化⇔元に戻す
^sc070::WIN_MaxRestore()
WIN_MaxRestore() {
WinGet, tmp, MinMax, A
If tmp = 1
WinRestore, A
Else
WinMaximize, A
}
(スクリプトファイルの作成方法については、コチラ をご覧ください)
同じアプリのウィンドウの切り替え
Windows って、キーボードで同じアプリ内のウィンドウを切り替えることが、アプリによってできる場合とできない場合があります。
例えば、Word が複数開いている場合には Ctrl + F6 で次のウィンドウに切り替えられますが、メモ帳が複数開いている場合には
また、例えば Google Chrome などのWebブラウザだと、Ctrl + Tab で次のタブに切り替えられますが、複数のウィンドウを開いている場合にウィンドウ同士を切り替えるショートカットキーは用意されていません。
そこで、同じアプリ内でウィンドウを切り替えるショートカットキーを作るスクリプトをご紹介しますね。
同じアプリの次のウィンドウへ
Alt + ] で同じアプリ内の次のウィンドウに切り替えるスクリプトです。
; Alt + ] で同じアプリ内の次のウィンドウに切り替える
!]::WIN_SameAppNext()
WIN_SameAppNext() {
WinGetClass, className, A
WinActivateBottom, ahk_class %className%
}
同じアプリの前のウィンドウへ
Alt + [ で同じアプリ内の前のウィンドウに切り替えるスクリプトです。
; Alt + [ で同じアプリ内の前のウィンドウに切り替える
![::WIN_SameAppPrev()
WIN_SameAppPrev() {
WinGet, thisWindowId, ID, A
WinGetClass, thisWindowClass, ahk_id %thisWindowId%
WinGet, allWindowIds, List, , , Program Manager
Loop, %allWindowIds% {
StringTrimRight, targetWindowId, allWindowIds%A_index%, 0
WinGetClass, targetWindowClass, ahk_id %targetWindowId%
if (thisWindowClass = targetWindowClass) {
if (thisWindowId <> targetWindowId) {
WinSet, Bottom, , ahk_id %thisWindowId%
WinActivate, ahk_id %targetWindowId%
break
}
}
}
}
・・・こちらはネットで検索しても出てこなかったので自分で書いたものなのですが、少し不具合があって、直し方が分からないでそのまま使っています。。
不具合内容は、一つ前のウィンドウに切り替える際に、自分自身のウィンドウが一番後ろに回ってしまう、というものです。
ちょっと不具合はありますが、僕と同様にこの機能が使いたい方もいるようなので、公開させていただきます。
アプリが起動している場合にはアクティブにして、起動していない場合には起動
使いたいアプリが既に起動している場合にはそのアプリのウィンドウをアクティブにして(前面に表示して)、起動していない場合には起動するスクリプトです。
今回は、「変換」キー + 数字キー のコンビネーションとなります。
;「変換」キー(sc079) + 数字キーで各種アプリをアクティブ化(または起動)
sc079 & 1::AppActivate("C:\Program Files (x86)\sakura\sakura.exe")
sc079 & 2::AppActivate("C:\Program Files (x86)\Mozilla Firefox\firefox.exe")
sc079 & 3::AppActivate("C:\Program Files (x86)\Internet Explorer\iexplore.exe")
sc079 & 4::AppActivate("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
; ウィンドウのアクティブ化、存在しない場合は起動
AppActivate(appPath) {
appName:=RegExReplace(appPath, ".*\\", "")
Process,Exist,%appName%
If (ErrorLevel <> 0) {
WinGetClass, targetWindowClass, ahk_id %ErrorLevel%
WinActivate,ahk_pid %ErrorLevel%
} else {
Run, %appPath%
}
}
Winキー + 数字キーでも似たような動きをしますが、アプリ内で複数のウインドウがあった場合の挙動が違います。
Winキー + 数字キーの場合: | 対象アプリを選択するようタスクバーの表示が切り替わる |
---|---|
上記のスクリプトの場合: | 対象アプリ内で一番最近表示されていたウィンドウがアクティブになる |
「変換」キーで IME を OFF にする、「カタカナひらがな」キーで IME を ON にする
Windows では、「半角/全角」キーで IME(日本語入力モード) の ON / OFF を切り替えますよね。
でも、今 ON になっているのか OFF になっているのかを判断するのためにはいちいち画面の通知領域を見なくてはならず、少々面倒だなぁと感じています。
それなら、IME の ON と OFF をそれぞれキーボードに割り当ててしまえばよいのではないか?という発想のスクリプトになります。
;「変換」キーで IME を OFF に
sc079::IME_SET(0)
;「カタカナひらがな」キーで IME を ON に
sc070::IME_SET(1)
IME_SET(SetSts, WinTitle="A") {
ControlGet,hwnd,HWND,,,%WinTitle%
if (WinActive(WinTitle)) {
ptrSize := !A_PtrSize ? 4 : A_PtrSize
VarSetCapacity(stGTI, cbSize:=4+4+(PtrSize*6)+16, 0)
NumPut(cbSize, stGTI, 0, "UInt") ; DWORD cbSize;
hwnd := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI)
? NumGet(stGTI,8+PtrSize,"UInt") : hwnd
}
return DllCall("SendMessage"
, UInt, DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwnd)
, UInt, 0x0283 ;Message : WM_IME_CONTROL
, Int, 0x006 ;wParam : IMC_SETOPENSTATUS
, Int, SetSts) ;lParam : 0 or 1
}
「カタカナひらがな」は、もともと IME を ON にする機能も備わっていますが、場合によって漢字の再変換の動きもするので、このスクリプトにより明示的に IME を ON にするだけに特化させています。
また、このスクリプトにより、「変換」キーや「カタカナひらがな」キーにもともと割り当てられている「再変換」の機能がつぶれてしまうので、「再変換」の機能を使っている方は他のキーに割り当てると良いかもしれません。
たとえば、Insert キーに IME を OFF にする機能を割り当てるには、Ins::IME_SET(0) とすれば OK です。
終わりに
今日はいつもとはガラッと変わった記事になりました。
一応僕も SE のはしくれなので、たまにはこんな記事もいいかなぁと。
他にも便利な AutoHotkey のスクリプトがあったらまた紹介させていただきますね。
それでは、今日も最後まで読んでいただき、どうもありがとうございます。
ディスカッション
コメント一覧
まだ、コメントがありません