トップ 一覧 検索 ログイン

AutoHotkey

リンク


ダウンロード

AutoHotkeyはインストーラ版とZIP版がある。
インストーラ版は公式サイトのページ上部「Download」→「Installer for AutoHotkey Basic (1.95 MB)」から、
ZIP版は「zip file」からダウンロードできる。

概要

  • 基本は常駐型だが非常駐使用も可能
  • 複数プロセスに分けて実行可能
  • Windows7対応

コメント

 コメントの書式


;コメントはこのように書く。

/*
複数行にわたる場合は、
このように書くこともできる。
*/

×次の書き方では括弧部分はコメントにならないので注意。(入れ子はできない)

/*
コメント文
/*
コメント文
*/
(コメント文ではない)
*/

コメントはコマンドの後ろに続けて書くこともできる。

#C::Run,notepad ;メモ帳を開く

ただし真後ろに書くことはできない。エラーとなる。

#C::Run,notepad;メモ帳を開く

 メッセージコメント(ヒアドキュメント)の書式


`nで改行を行う。(`はShift + @ で打てる)

MsgBox,おはよう!`nこんにちは!`nこんばんは!

()で囲まれた文字は、タブ・改行を含めてそのままの形で出力される。 1行1行が長い場合や変数等でごちゃごちゃしている場合はこちらの方が見やすい。

MsgBox,
(
おはよう!
こんにちは!
こんばんは!
)
return

これらのコマンドの実行結果は全く変わらない。


装飾・コマンド・変数


 装飾キー

基本的な装飾キー

+ Shift
^ Control
! Alt
# Win

これらのキーは幾らでも組み合わせることが出来る。例えば、Ctrl + Alt + F ならば ^!Fとする。尚、^と!は前後逆でも良く、またFは小文字のfでも良い。(Sendコマンドにおいては大文字と小文字は区別されるので注意)

Win+Pでペイントを起動

#P::Run,mspaint

Alt+Ctrl+IでIEを起動

!^I::Run,iexplore

Shift+Alt+Ctrl+Cでコントロールパネルを起動

+!^C::Run,control

Alt+Win+Ctrl+Shift+Nでメモ帳を起動

!#^+N::Run,C:\WINDOWS\system32\notepad.exe

装飾キーとして活用したいキー


sc07B 無変換
sc079 変換

これらは本来装飾キーではないがあまり使い道がない上同時押しし易い位置に存在することからも装飾キーとして扱うことも検討したい。
これらは1つだけ組み合わせることが可能で、装飾キーと非装飾キーの間を&で繋いで使用する。

無変換+C で電卓を起動する

sc07B & C:: Run,calc

無理なやり方

sc07BC:: Run,calc

→^を用いた^Cのように使うことは不可能。

^sc07B & C:: Run,calc
Ctrl & sc07B & C:: Run,calc

→3つ押しはGetKeyState()を使えば可能(サンプルスクリプトに記載)。

例外(下で説明)

{blind}

装飾キーとして扱えないキー


Caps Lock

Caps Lockキーは日本語キーボードの構成上他のキーの割り当てたりすることができない。レジストリを書き換えることで変更できるソフトChange KeyKey Swapを使おう。


 コマンドとか

{blind}

{blind}を付けるのと付けないのとでは何が違うか。

例えば、

sc07B & J:: Send,{Blind}{Left}

このように送るキーの前に{Blind}を加えると、無変換+Jで左にカーソル移動、Shift+無変換+Jで左選択ができるようになる。

#P:: Send,{blind}{PrintScreen}

PrintScreenキーを押すとスクリーン全体を撮るが、Alt + PrintScreenキーを押すとアクティブウィンドウのみを撮る。
つまり、これは以下の2つのコマンドを一つにまとめられる。

#P:: Send,{PrintScreen}
!#P:: Send,{Alt}{PrintScreen}

return

スクリプト終了コマンド。ひとつのスクリプトの終わりには必ずひとつのreturnコマンドを書く(忘れると暴走して大変なことに…)。ただし一行の場合は省略できる。

#C::
   MsgBox,TestMessage
   return

#C::MsgBox,TestMessage

FormatTime

日付を挿入する。reference

WinMenuSelectItem

指定ウィンドウのメニューバーのコマンドを実行する。これを使えば、ショートカットキーを自分で作ることも可能。Sendコマンドでするよりも安定的。reference

SysGet

ウィンドウ、モニタ、システム関連の情報を取得する(Wiki)。

SysGet, screenH, 0 ; SM_CXSCREEN:画面全体のサイズ
SysGet, screenW, 1 ; SM_CYSCREEN:画面全体のサイズ
SysGet, titlebarH, 4 ; SM_CYCAPTION:タイトルバーの高さ

 組み込み変数

A_CaretX, A_CaretY

入力位置(点滅ヶ所)を取得する。

A_CaretX
X座標
Y_CaretY
Y座標

#A:: MsgBox, A_CaretX = %A_CaretX% `nA_CaretY = %A_CaretY%

A_ScreenWidth, A_ScreenHeight

画面サイズを取得する。

A_ScreenWidth
画面の横幅
A_ScreenHeight
画面の高さ

#A:: MsgBox, A_ScreenWidth = %A_ScreenWidth% `nA_ScreenHeight = %A_ScreenHeight%

スキャンコード

名前キー名スキャン
コード
補足
半角/全角sc029
CapsLocksc03Aあってないようなもの
ハイフン-sc00C
ハット^sc00D^^でCtrl+^
バックスラッシュ(|)\sc07D\は不安定、コード推奨
アットマーク@sc01A
始め括弧[sc01B
終わり括弧]sc02B
セミコロン;sc027「;」だけなら「`;::MsgBox,`;」、2つ押し以上はコード
コロン:sc028「:」だけなら「:::MsgBox,:」、2つ押し以上はコード
カンマ,sc033
ピリオド.sc034
スラッシュ/sc035
バックスラッシュ(_)\sc073コード必須
無変換sc07B
変換sc079
カタカナ・ひらがなsc070
アプリケーションAppsKeysc15D

サンプルスクリプト


 単一起動

Ctrl+1をを押したとき、

  • メモ帳が起動していてアクティブ表示ならば、何もしない。
  • メモ帳が起動していて非アクティブ表示ならば、アクティブにする。
  • メモ帳が起動していなければ、起動する。
^1:: ;Ctrl+1でメモ帳を起動
	IfWinActive,.* - メモ帳
		return
	else IfWinExist .* - メモ帳
		WinActivate
	else
		Run,notepad
	return

 クリック連打

Windowsキーを押しながらクリックするとクリックを10回繰り返す。

#LButton::Send,{LButton 10}

1秒毎にクリックし、計10回クリックする。

#LButton::
    SetKeyDelay,1000
    Loop,10
        Send,{LButton}
return


 2回押し(連続押し)

Ctrlキーの2回押しでスタートメニューを表示する。

Ctrl::
	If (A_PriorHotkey = A_ThisHotKey && A_TimeSincePriorHotkey < 300)
		Send,^{Esc}
	KeyWait,Ctrl
return

 3つ押し

無変換キーを含む3つ押し。

sc07B & A::
    If GetKeyState("Shift","P")
        MsgBox,Shift+無変換+A
    else
        MsgBox,無変換+A
    return

 キーの無効化

(無効にしたいキー)::return

とすれば、そのキーを無効化できる。例えば、ノートパソコン等についているメディアボタンを無効にする場合は次のようにする。

Media_Prev::
Media_Play_Pause::
Media_Stop::
Media_Next::
return

 矢印記号の挿入

矢印記号(←↑↓→)をキーボードで直接入力するためのスクリプト。
アプリケーションによっては使えない場合もある。

; 矢印記号の挿入
#Right:: Send,{ASC 33192}	;→
#Left:: Send,{ASC 33193}	;←
#Up:: Send,{ASC 33194}		;↑
#Down:: Send,{ASC 33195}	;↓

 ウィンドウ・マウス位置情報の取得

#G::
WinGetTitle,title,A  ;アクティブウィンドウのタイトル
WinGetPos,X,Y,W,H,A  ;アクティブウィンドウの左上座標(X,Y)とサイズ(W,H)
WinGetPos,,,scW,scH,Program Manager  ;スクリーンサイズ(scW,scH)
MouseGetPos,mouseX,mouseY  ;マウスカーソル座標
MsgBox,  ;表示テスト
(
アクティブウィンドウのタイトル : %title%
アクティブウィンドウの左上座標 : (%X%, %Y%), サイズ : (%W%, %H%)
スクリーンサイズ : (%scW%, %scH%)
マウスカーソル座標 : (%mouseX%, %mouseY%)
)
return

 ステータスバーのテキストを取得

StatusBarGetTextコマンドでステータスバーのテキストを取得する。
StatusBarGetText

#G::
	StatusBarGetText, text, , A
	StatusBarGetText, text2, 2, A
	StatusBarGetText, text3, 3, A
	MsgBox,
	(LTrim
		1: %text%
		2: %text2%
		3: %text3%
	)
	Return

 マウスカーソル下のウィンドウサイズを取得

#G::
	MouseGetPos, , , id ; ウィンドウハンドル取得
	WinGetPos, , , w, h, ahk_id %id%
	MsgBox, %w% x %h%
	Return

 ウィンドウのスタイルを取得

WinGetコマンドの引数にStyleやExStyleを指定してスタイルや拡張スタイルを取得する。
WinGet, ウィンドウスタイル一覧, &

メモ帳が最小化していれば最小化、最大化していれば最大化と表示する。

#G::
	WinGet, style, Style, ahk_exe notepad.exe
	If(style & 0x20000000)
		MsgBox, 最小化
	Else If(style & 0x01000000)
		MsgBox, 最大化
	Return

 最前面表示

実行する度に最前面表示ONとOFFをトグルする。

#A:: WinSet, Topmost, Toggle, A ;最前面表示

ついでにツールチップも表示。

;最前面表示
#A::
	WinSet, Topmost, Toggle, A
	WinGet, exStyle, ExStyle, A
	If ((exStyle & 0x00000008) != 0)  ;最前面表示ONならTrue
		Message = 最前面表示 ON
	Else
		Message = 最前面表示 OFF

	CoordMode, ToolTip, Relative
	ToolTip, %Message%, 7, 26
	SetTimer, RemoveToolTip, 3000
	Return

RemoveToolTip:
	SetTimer, RemoveToolTip, Off
	ToolTip
	Return

 ツールチップを一定時間表示して自動で閉じる

ツールチップを2秒間だけ表示する。

#Q::
	ToolTip,´・ω・``
	SetTimer,RemoveToolTip,2000
	return

RemoveToolTip:
	SetTimer,RemoveToolTip,off
	ToolTip
	return


プログラム

 コンパイルする

ahkファイルをexeファイルにコンパイルする方法。

  1. \Compiler\Ahk2Exe.exe を実行する。
  2. Reuired Parameters -> Sortce〔script file〕-> 「Broese」ボタン からコンパイルしたいahkファイルを読み込む。
  3. 「> Convert <」ボタンをクリックするとコンパイル元のahkファイルがあるフォルダにexeファイルが作成される。

作成されたexeファイルは通常のソフト同様に扱うことができる。また、コンパイルしても元のahkファイルは消去されない。



ヘルプ

 AHKで作ったメニューをEscで閉じられないときは?

$Esc〜をグローバルキーに指定している場合、Menuコマンドで作るメニューがEscで閉じられない。

AHKで作成したメニューをEscで閉じるには、Menuコマンドの先頭行にHotkey,Esc,Off、末尾行にHotkey,Esc,Onというのを書き加えれば回避できる。

Hotkey,Esc,Off
/* 任意のスクリプト */
Hotkey,Esc,On

メニューのラベル
  • Menuで指定するラベルは所謂GoSubのような働きをする。

[アプリケーション]

 トップ / 最終更新時間:2014年03月21日 18時34分28秒