1.AutoItでショートカットキーを設定する方法。
キーを押した時に実行される関数を書いてHotKeySet()で登録する。実行中は無限ループでキー入力待機。
; CTRL+aに関数を割り当てる
HotKeySet("^a", "RunTest")
While 1
Sleep(100)
WEnd
Func RunTest()
MsgBox(0, "Test", "CTRL+a が押された")
EndFunc
特殊なキーとしては
! | : ALTキー |
+ | : SHIFTキー |
^ | : CTRLキー |
# | : WINDOWSキー |
2.特定のアプリケーションだけで有効にしたい場合
特定のアプリケーションのウィンドウがアクティブかどうかWinActive()で判定して処理をかき分ける。
; CTRL+aに関数を割り当てる
HotKeySet("^a", "RunTest")
While 1
Sleep(100)
WEnd
Func RunTest()
;メモ帳でだけ有効
If WinActive ("[CLASS:Notepad]", "") Then
MsgBox(0, "Test", "CTRL+a が押された")
EndIf
EndFunc
3.選択文字列を渡して処理
ClipGet()を使ってクリップボード経由で値を渡すとウェブブラウザと連携できて便利。
; CTRL+eに関数を割り当てる
HotKeySet("^e", "TranslateWord")
While 1
Sleep(100)
WEnd
; 選択中の文字を使って"英辞郎on the WEB"で検索
Func TranslateWord()
Send("^c")
$word = ClipGet()
ShellExecute("http://eow.alc.co.jp/%22" & $word & "%22/UTF-8/")
EndFunc
4.キーカスタマイズの開始・一時停止・終了
リファレンスのサンプルにもあるけれどキーカスタマイズの一時停止・終了を書いて置くと意外と便利。デフォルトで実行したい場合はスクリプトをコンパイルしてスタートアップに入れておけばいい。
Global $Paused ; キーマッピングの一次解除/再開の状態を表すフラグ
HotKeySet("{PAUSE}", "TogglePause") ; Pauseキーでキーマッピングの一次解除/再開
HotKeySet("{ESC}", "Terminate") ; ESCキーでスクリプトの終了
HotKeySet("^e", "TranslateWord") ; CTRL+eに関数を割り当てる
; キー入力を待つ
While 1
Sleep(100)
WEnd
; キーマッピングの一次解除/再開
Func TogglePause()
$Paused = Not $Paused
While $Paused
Sleep(100)
ToolTip("キーマッピング一時停止中", 10, 10)
WEnd
ToolTip("")
EndFunc
; スクリプトの終了
Func Terminate()
$input = MsgBox(4, Default, "キーマッピングを終了します")
If $input =6 Then
Exit 0
EndIf
EndFunc
; 選択中の文字を使って"英辞郎on the WEB"で検索
Func TranslateWord()
Send("^c")
$word = ClipGet()
ShellExecute("http://eow.alc.co.jp/%22" & $word & "%22/UTF-8/")
EndFunc
関連:
AutoIt v3 ドキュメント 日本語訳プロジェクト
AutoItでIEを自動操作
AutoIt アプリ操作 10のサンプルスクリプト