2009年7月16日木曜日

AutoHotKeyを使ってみた

このエントリーをはてなブックマークに追加
AutoHotkeyはアプリケーション毎のホットキーの割り当てや,キーカスタマイズ,スクリプトによるOS/アプリケーションのコントロール等ができるツールです.

簡単に言うと,自由自在に操作できる高機能なスクリプト実行環境です.

詳しい使い方は,
AutoHotkeyを流行らせるページ
に書いてあるので,見て下さい.


いくつかスクリプトを書いたので,メモします
■Alt+Tabの動作変更
通常,Alt+TabでWindows標準のウィンドウ切り替えが起動しますが,インクリメンタルサーチで絞り込めるウィンドウ切り替えソフトウェア「CLTC」に変更します.
!Tab::Run "C:\MyPrograms\cltc\cltc.exe"



■起動orアクティブ
関数を定義し,プログラムが起動していなかったら起動し,起動している場合には,アクティブ(トップに表示すること)にします.
ここでは,Alt+aで便利な2画面ファイラー「あふ」を,Alt+cで,ユーザデスクトップ上で,コマンドプロンプトを起動します.その他にもいくつか割り当ててますが,省略します.
Launch(class, path)
{
IfWinNotExist ahk_class %class%
Run, %path%
else
WinActivate, ahk_class %class% 
return
}
Launch_Param(class, path, param)
{
IfWinNotExist ahk_class %class%
Run, %path%, %param%
else
WinActivate, ahk_class %class%
return
}
!a::Launch("TAfxForm", "C:\MyPrograms\afx11\AFX.EXE")
!c::Launch_Param("ConsoleWindowClass", "cmd.exe", "C:\Users\*****\desktop")



■F10でアクティブなウィンドウを半透明にする
こんな感じ


F10::
WinGet, t, Transparent, A
if %t%
WinSet, Transparent, Off, A
else
WinSet, Transparent, 160, A
return



■Ctrl+F10で上記を全てのウィンドウに
^F10::
WinGet, id, list, , , Program Manager
Loop, %id%
{
StringTrimRight, this_id, id%a_index%, 0
WinGet, t, Transparent, ahk_id %this_id%
if %t%
WinSet, Transparent, Off, ahk_id %this_id% 
else
WinSet, Transparent, 160, ahk_id %this_id% 
}
return




■F11でアクティブなウィンドウを最大化
F11::
WinGet, State, MinMax, A
if State != 0
WinRestore, A
else
WinMaximize, A
return



■Ctrl+F11でアクティブなウィンドウを最小化
^F11::
WinGet, State, MinMax, A
if State != 0
WinRestore, A
else
WinMinimize, A
return



■Win+カーソルでウィンドウの移動
Ctrlも一緒に押すと移動量が少なくなります
WinMoveStep(XD,YD,PARAM) {
WinGet,win_id,ID,A
WinGetPos,x,y,,,ahk_id %win_id%
Step := 128
if(PARAM = 1)
Step := 24
x := x + (XD * Step)
y := y + (YD * Step)
WinMove,ahk_id %win_id%,,%x%,%y%
return
}
#Left::WinMoveStep(-1,0,0)
#Right::WinMoveStep(1,0,0)
#Up::WinMoveStep(0,-1,0)
#Down::WinMoveStep(0,1,0)
#^Left::WinMoveStep(-1,0,1)
#^Right::WinMoveStep(1,0,1)
#^Up::WinMoveStep(0,-1,1)
#^Down::WinMoveStep(0,1,1)



■Win+Shift+カーソルでウィンドウサイズを変更
Ctrlも一緒に押すと移動量が少なくなります
WinSizeStep(XD,YD,PARAM) {
WinGet,win_id,ID,A
WinGetPos,,,w,h,ahk_id %win_id%
Step := 128
if(PARAM = 1)
Step := 24
w := w + (XD * Step)
h := h + (YD * Step)
WinMove,ahk_id %win_id%,,,,%w%,%h%
return
}
+#Left::WinSizeStep(-1,0,0)
+#Right::WinSizeStep(1,0,0)
+#Up::WinSizeStep(0,-1,0)
+#Down::WinSizeStep(0,1,0)
+#^Left::WinSizeStep(-1,0,1)
+#^Right::WinSizeStep(1,0,1)
+#^Up::WinSizeStep(0,-1,1)
+#^Down::WinSizeStep(0,1,1)



■Shift+SpaceでIME ON-OFF切り替え
+Space::Send, {vkF3sc029}



■単独のWinキーのみでスタートメニューを表示しない
※誤動作防止のため
RWin::return
RWin & RWin::return
LWin::return
LWin & LWin::return



■コマンドプロンプト
コマンドプロンプト上でもクリップボードの内容を貼り付けるのに,Ctrl+vを使えるようにする.また,終了はCtrl+w,全て選択はCtrl+a等

#IfWinActive ahk_class ConsoleWindowClass
^v::Send,!{Space}ep     ; ^V ペースト
^w::Send,!{Space}c      ; ^W 終了
^f::Send,!{Space}ef     ; ^F 検索
^a::Send,!{Space}es     ; ^A 全て選択
^k::Send,!{Space}ek     ; ^K 選択
#IfWinActive





AutoHotkeyを流行らせるページに行くと便利なサンプルプログラムがあります.
中でもホイールリダイレクトは便利!