ここではAutoHotKeyから、ダイアログなどのGUIを作成する方法について解説しています。他のアプリケーションのGUIの状態を取得したり制御する方法は、ウィンドウ操作のコマンドにあります。
ダイアログを表示できます。
パラメータ未指定時の、既定のMsgBox
ユーザーの確認が不要ならば、バルーンチップを用います。
MsgBox, Text
MsgBox [, Options, Title, Text, Timeout]MsgBox
パラメータ | 説明 | 既定値 |
---|---|---|
Text | メッセージボックスのテキスト | "Press OK to continue." |
Options | メッセージボックスの種類 | 0 |
Title | メッセージボックスのタイトル | スクリプト名 |
Timeout | メッセージボックスが自動で閉じるまでの秒数 |
v1.1.06以降では「%
」を指定することで、OptionsとTimeoutを式と認識させられます。1.1.06.00 - Changes & New Features | AutoHotkey
v1.1.21以降では「%
」を指定することで、OptionsとTimeout以外のパラメータも式と認識させられます。1.1.21.00 - Changes & New Features | AutoHotkey
MsgBox, % 2+3 ; "5" と出力 MsgBox, 2+3 ; "2+3" と出力
Optionsで、メッセージボックスの種類を指定できます。
種類は定められて数値で指定します。たとえば[OK]と[Cancel]ボタン、それに警告アイコンを表示するには下表より、
であるから、これらの論理和をとり0x31
とします。Optionsはリテラルでなければならないため、0x1 | 0x30
のようには指定できません。
機能 | 10進数 | 16進数 |
---|---|---|
OK (that is, only an OK button is displayed) |
0 | 0x0 |
OK/Cancel |
1 | 0x1 |
Abort/Retry/Ignore |
2 | 0x2 |
Yes/No/Cancel |
3 | 0x3 |
Yes/No |
4 | 0x4 |
Retry/Cancel |
5 | 0x5 |
Cancel/Try Again/Continue (2000/XP+) |
6 | 0x6 |
Adds a Help button (see remarks below) |
16384 | 0x4000 |
機能 | 10進数 | 16進数 |
---|---|---|
Icon Hand (stop/error) |
16 | 0x10 |
Icon Question |
32 | 0x20 |
Icon Exclamation |
48 | 0x30 |
Icon Asterisk (info) |
64 | 0x40 |
機能 | 10進数 | 16進数 |
---|---|---|
Makes the 2nd button the default | 256 | 0x100 |
Makes the 3rd button the default | 512 | 0x200 |
機能 | 10進数 | 16進数 |
---|---|---|
System Modal (always on top) |
4096 | 0x1000 |
Task Modal |
8192 | 0x2000 |
Always-on-top (style WS_EX_TOPMOST) (System Modalから、タイトルバーのアイコンを除外したもの) |
262144 | 0x40000 |
機能 | 10進数 | 16進数 |
---|---|---|
Make the text right-justified | 524288 | 0x80000 |
Right-to-left reading order for Hebrew/Arabic | 1048576 | 0x100000 |
既定ではプライマリモニタの中央に表示され、これを変更する手段は提供されていません。よってその必要があるならば、SetTimerを利用し別スレッドからWinMoveで移動させます。How Do I Define the Position of a MsgBox on Screen? - Ask for Help - AutoHotkey Community
A:: SetTimer, WinMoveMsgBox, 100 MsgBox, TEST return WinMoveMsgBox: SetTimer, WinMoveMsgBox, Off WinMove, A, , 100, 200 return
直近のMsgBoxで、ユーザーによって押されたボタンを調べられます。
IfMsgBox, ButtonNameIfMsgBox
ButtonNameには、ボタン名を文字列で指定します。
MsgBox, 0x41, ,よろしいですか?
IfMsgBox, OK
{
;
}
スクリーンの任意の位置に、つねに前面に表示されるウィンドウ (ツールチップ) を作成できます。
ToolTip [, Text, X, Y, WhichToolTip]ToolTip
X、Yで指定する位置は、既定ではアクティブ ウィンドを基準とした座標となります。これを省略すると、マウスポインタの近くに表示されます。
WhichToolTipは、複数のツールチップを表示するときに、それらを区別するために用います。既定値は1で、1~20の値を指定できます。
ツールチップは、以下のいずれかの条件を満たすまで表示され続けます。
たとえば、
ToolTip, Multiline`nTooltip
とすると、次のように表示されます。
トレイのメニューを操作できます。
Menu, MenuName, Cmd [, P3, P4, P5]Menu
Cmdの値によって、P3、P4、P5のパラメータの意味が決定されます。
Cmd | P3,P4,P5 | 操作 |
---|---|---|
Add | [, MenuItemName, Label-or-Submenu, Pn] | メニュー項目を追加する |
Delete | [, MenuItemName] | 項目を削除する。ただし標準のメニューは削除できない |
DeleteAll | すべてのカスタムメニューを削除する | |
Rename | , MenuItemName [, NewName] | |
Check | , MenuItemName | メニュー項目にチェックマークを付ける |
Uncheck | , MenuItemName | メニュー項目からチェックマークを外す |
ToggleCheck | , MenuItemName | メニュー項目にチェックマークがなければ付け、あれば外す |
Enable | , MenuItemName | |
Disable | , MenuItemName | |
ToggleEnable | , MenuItemName | |
Default | [, MenuItemName] | トレイのアイコンをダブルクリックしたときに実行する項目の指定 |
NoDefault | Defaultの指定を無効にする | |
Standard | 標準のメニューが存在しなければ、それを末尾に挿入する | |
NoStandard | 標準のメニューを除去する |
Cmd | P3,P4,P5 | 操作 |
---|---|---|
Icon | , MenuItemName, FileName [, IconNumber, IconWidth] | メニュー項目のアイコンの指定 |
NoIcon | , MenuItemName |
Cmd | P3,P4,P5 |
---|---|
Icon | [, FileName, IconNumber, 1] |
Icon | |
NoIcon | |
Tip | [, Text] |
Cmd | P3,P4,P5 |
---|---|
Show | [, X, Y] |
Color | , ColorValue [, Single] |
Click | , ClickCount |
MainWindow | |
NoMainWindow | |
UseErrorLevel | [, off] |
CmdパラメータをAddとします。
Menu, MenuName, Add [, MenuItemName, Label-or-Submenu, Pn]
パラメータのPnでは、メニューのスレッド優先度を指定します。それはP0
やP1
のように記述し、既定の優先度はP0
です。たとえば次のようにすると、
Menu, MySubmenu, Add, Item1
Menu, Tray, Add, Submenu, :MySubmenu
return
Item1:
; メニューから実行する処理
return
下図のようにメニューが追加されます。
Add以降のパラメータを指定せず、
Menu, Tray, Add
とすると、区切り線が追加されます。
メニューの既定の項目を変更できます。既定の項目とは太字のフォントで表示され、トレイのアイコンをダブルクリックしたときに実行される項目です。
Menu, MenuName, Default [, MenuItemName]
MenuItemNameでは、標準のメニュー項目を指定できません。どうしても指定するならば、同じ機能のメニュー項目を作成し、それを既定の項目に指定します。
Menu, Tray, Add, Edit This Script, EditScript Menu, Tray, Default, Edit This Script return EditScript: Edit return
CmdパラメータをIconとします。
Menu, MenuName, Icon, MenuItemName, FileName [, IconNumber, 1]
IconNumberは、読み込むファイルがアイコン ライブラリのとき、そのライブラリにおけるアイコンの番号を指定します。
最後のパラメータを1とすることで、ポーズやサスペンド時にアイコンが変更されないようになります。これを0とするかまたは指定しないと、ポーズやサスペンド時には既定のアイコンに変更されます。一方でポーズやサスペンドしているときにアイコンを変更するには、このパラメータを1とします。さもなくばアイコンの変更が適用されません。
トレイのアイコンを変更するには、MenuNameを「Tray」とします。
Menu, Tray, Icon [, FileName, IconNumber, 1]
TrayTip [, Title, Text, Seconds, Options]TrayTip
たとえば、
TrayTip, My Title, Multiline`nText, 20, 17
とすると、
のように表示されます。
表示時間はSecondsで指定し、10から30秒の間である必要があります。これより短い時間だけ表示するには、タイマーを使用して明示的にバルーンチップを消去します。
TrayTip, Timed TrayTip, This will be displayed for 5 seconds. SetTimer, RemoveTrayTip, 5000 return RemoveTrayTip: SetTimer, RemoveTrayTip, Off TrayTip ; バルーンチップを消去 return
30秒より長い時間表示するには、定期的に表示をくり返します。次の方法では1秒ごとに表示します。そのためこの方法では、表示するたびにちらつきが発生してしまいます。
SetTimer, RefreshTrayTip, 1000
Gosub, RefreshTrayTip ; Call it once to get it started right away.
return
RefreshTrayTip:
TrayTip, Refreshed TrayTip, This is a more permanent TrayTip., , 16
return
Optionsで、アイコンや音を指定できます。
機能 | 10進 | 16進 |
---|---|---|
Info icon | 1 | 0x1 |
Warning icon | 2 | 0x2 |
Error icon | 3 | 0x3 |
Do not play the notification sound (Windows XP以降) | 16 | 0x10 |
Use the large version of the icon (Windows Vista以降) | 32 | 0x20 |
Gui, SubCommand [, Value1, Value2, Value3]Gui - Syntax & Usage | AutoHotkey
Gui, Add, ControlType [, Options, Text]
Optionsで先頭に「v」を付加すると、それがコントロールに関連付けられた変数と見なされます。Storing and Responding to User Input - Gui - Syntax & Usage | AutoHotkey
また「g」を付加すると、コントロールがクリックまたは変更されたときにそのラベル (g-label) が実行されます。
Sample: Gui, Add, Edit, vA ; コントロールの内容は、Gui, Submitの呼び出しで変数Aに格納される Gui, Add, Button, default, OK ; このボタンが押されると、"Button" + "OK"の名前のラベルへ処理が移る Gui, Add, Button, , Cancel Gui, Show ; ウィンドウを表示する return ButtonOK: Gui, Submit ; コントロールの内容をそれに関連付けられた変数へ格納し、ウィンドウを隠す MsgBox, % A return ButtonCancel: GuiEscape: ; Escが押されると呼び出される Gui, Hide ; ウィンドウを隠す return GuiClose: ; ウィンドウが閉じられると呼び出される return
コントロールの内容を変数を介して取得するには、Gui, Submitを呼ぶ必要があります。ただしHotkeyコントロールのようにg-labelの呼び出しで関連付けられた変数に値が格納されるものもあり、その場合はGui, Submitは不要です。
ユーザーによってタイトルバーの「X」などで閉じられたときには、ウィンドウは非表示となるだけです。そのためその後でAddでコントロールを追加すると「Error: The same variable cannot be used for more than one control.」として追加に失敗します。これに対処するにはGUIをあらかじめ作成しておき必要なときにGui, Showで表示するだけとするか、GuiCloseでGui, Destroyにより都度ウィンドウを破棄します。GuiClose - Gui - Syntax & Usage | AutoHotkey
Optionsで「g」に続けてラベルを指定すると、テキストがクリックされたときにそれが呼び出されます。Text - GUI Control Types - Syntax & Usage | AutoHotkey
Gui, Add, Text, gMyLabel, Click here
Optionsでdefaultを指定すると、Enterが押されたときにそのボタンのラベルが処理されます。一方でEscに反応するには、GuiEscapeラベルにその処理を記述します。
Gui, Add, Button, default, OK
Gui, Add, CheckBox, vA, box1 Gui, Add, CheckBox, vB Checked, box2 ; "On"の状態で開始する Gui, Add, CheckBox, vC Check3, box3 ; 不定を有効にする Gui, Add, CheckBox, vD Check3 CheckedGray, box4 ; "不定"の状態で開始する
表示 | 状態 | 値 |
---|---|---|
チェックされている | On | 1 |
チェックされていない | Off | 0 |
グレー表示 | 不定 | -1 |
連続するRadioは同一グループと見なされます。そのときOptionsでGroupが指定されるか、Radioではないコントロールがあると、そこから新しいグループと見なされます。
Gui, Add, Radio, vA, radio1 Gui, Add, Radio, , radio2 Gui, Add, Radio, Checked, radio3 ; "on"の状態で開始する Gui, Add, Radio, vB Group, radio1 ; ここから新しいグループ Gui, Add, Radio, , radio2 Gui, Add, Text, , TEST Gui, Add, Radio, vC, radio1 ; ここから新しいグループ
関連付けた変数には、何も選択されていないならば0、最初のRadioが選択されたならば1、次ならば2とその番号が格納されます。Radio - GUI Control Types - Syntax & Usage | AutoHotkey
初期値を設定するならば、
Gui, Add, Hotkey, vChosenHotkey, ^!p
のようにTextのパラメータで指定します。
EnterやSpaceなど、認識されないキーがあります。Pause key doesent work with gui hotkey. - AutoHotkey Community
GUIウィンドウのコントロールを操作できます。
GuiControl, SubCommand, ControlID [, Value]GuiControl - Syntax & Usage | AutoHotkey
SubCommandを省略する形式では、コントロールを新しい内容にできます。
GuiControl,, ControlID [, Value](Blank) - GuiControl - Syntax & Usage | AutoHotkey
たとえば
Gui, Add, Edit, vA
として作成されているコントロールがあるとき、
GuiControl, , A, ABC
とすると、変数Aと関連付けられているEditコントロールに値が設定されます。
たとえば
Gui, Add, Radio, vA, radio1 Gui, Add, Radio, , radio2
のように作成されたGUIがあるとき、radio2がチェックされている状態で
Gui, Submit
を呼び出すと、変数Aに2が格納されます。このとき逆に
GuiControl, , A, 2
として変数Aに関連付けられているコントロールに2を設定すると、radio1のテキストが"2"に書き換えられます。これをradio2がチェックされている状態とするには、
GuiControl, , radio2, 1
のようにして、チェックしたいコントロールのテキストもしくはControlIDを指定して、チェック状態を意味する1を設定します。
以下のラベルがスクリプト内にあるとき、GUIウィンドウに自動的に関連付けられます。
のいずれかでウィンドウが閉じられたときに呼ばれます。GuiClose - Gui - Syntax & Usage | AutoHotkey
コントロールを追加すると、それらは下に配置されていきます。
Gui, Add, Button, , Button1 Gui, Add, Button, , Button2 Gui, Add, Button, , Button3 Gui, Add, Edit Gui, Add, Edit
これらを横に配置するには、基準とするコントロールにSectionを指定し、後続するコントロールをysとして同じy軸上の位置を基準とします。
Gui, Add, Button, Section, Button1 Gui, Add, Button, ys, Button2 Gui, Add, Button, ys, Button3 Gui, Add, Edit Gui, Add, Edit
前述の方法では位置を明示しないコントロールにも影響が及ぶため、それが意図したものでなければ-xsでそれを解除します。
Gui, Add, Button, Section, Button1 Gui, Add, Button, ys, Button2 Gui, Add, Button, ys, Button3 Gui, Add, Edit, -xs Gui, Add, Edit
カスタマイズ可能な、テキスト表示のポップアップ ウィンドウを作成できます。
SplashTextOn [, Width, Height, Title, Text]SplashTextOn/SplashTextOff
パラメータ | 説明 | 既定値 |
---|---|---|
Width | ウィンドウのピクセル単位での幅 | 200 |
Height | ウィンドウのピクセル単位での高さ (タイトルバーは除く) | 0 |
Title | ウィンドウのタイトル | "" |
Text※1 | ウィンドウのテキスト | "" |
SplashTextOnで表示したウィンドウは、そのスレッドの終了またはSplashTextOffにより消去されるまで表示され続けます。またつねに前面に表示され、ウィンドウ表示時に再びSplashTextOnを実行すると、ウィンドウは新しい設定で再生成されます。
たとえば次のようにタイトルだけを指定すると、
SplashTextOn, , , Displays only a title bar.
下図のように表示されます。
ウィンドウのサイズを含めてテキストも指定すると、
SplashTextOn, 300, 200, title, text
下図のようになります。
存在するポップアップ ウィンドウを除去できます。
SplashTextOff
パラメータはありません。