提供: AutoHotkey Wiki
移動: 案内検索

実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 | キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル | レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト

Gui,Add,Custom [v1.1.10+][編集]


Gui, Add, Custom [, ClassName Options]


引数名 説明
ClassName Name にWin32APIのクラス名を指定。
Options オプションを半角スペース区切りで列挙。


AutoHotkeyで直接サポートされていないその他のコントロールもGUIウィンドウに埋め込むことができる。 そのため、Win32のクラス名はGui, AddClassオプションで指定する必要がある。

Gui, Add, Custom, ClassComboBoxEx32 ; ComboBoxExコントロールを追加する。
Gui, Add, Custom, ClassScintilla    ; Scintillaコントロールを追加する。

AutoHotkey uses the standard Windows control text routines when text is to be retrieved/replaced in the control via Gui, Add or GuiControl/Get.

G-Label Notifications: A g-label such as gMySubroutine may be listed in the control's options in order to capture events coming from the control. This subroutine may consult the built-in variables A_Gui and A_GuiControl. More importantly, it may consult A_GuiEvent, which contains one of the following strings (for compatibility with future versions, a script should not assume these are the only possible values):

  • Normal: A WM_COMMAND message was received. A_EventInfo contains a control-defined notification code (equivalent to HIWORD(wParam) in C/C++).
  • N: A WM_NOTIFY message was received. A_EventInfo contains a pointer to the control notification structure (NMHDR). A 32-bit signed integer value may be returned to the control by assigning it to ErrorLevel (by default, the g-label thread's ErrorLevel is set to zero). Invalid values are treated as zero.


GUI, Gui,Add, Gui,Add,ActiveX


IPアドレスコントロール を追加して使用する方法

Gui, Add, Custom, ClassSysIPAddress32 r1 w150 hwndhIPControl gIPControlEvent
Gui, Add, Button, Default, OK
IPCtrlSetAddress(hIPControl, A_IPAddress1)
Gui, Show


Gui, Hide
MsgBox % "You chose " IPCtrlGetAddress(hIPControl)

If A_GuiEvent = Normal
    ; WM_COMMAND was received.

    If (A_EventInfo = 0x0300)  ; EN_CHANGE
        ToolTip Control changed!
Else If A_GuiEvent = N
    ; WM_NOTIFY was received.

    ; Get the notification code. Normally this field is UInt but the IP address
    ; control uses negative codes, so for convenience we read it as a signed int.
    nmhdr_code := NumGet(A_EventInfo + 2*A_PtrSize, "int")
    If (nmhdr_code != -860)  ; IPN_FIELDCHANGED

    ; Extract info from the NMIPADDRESS structure
    iField := NumGet(A_EventInfo + 2*A_PtrSize + 4, "int")
    iValue := NumGet(A_EventInfo + 2*A_PtrSize + 8, "int")
    If iValue >= 0
        ToolTip Field #%iField% modified: %iValue%
        ToolTip Field #%iField% left empty

IPCtrlSetAddress(hControl, ipaddress)
    static WM_USER := 0x400
    static IPM_SETADDRESS := WM_USER + 101

    ; Pack the IP address into a 32-bit word for use with SendMessage.
    ipaddrword := 0
    Loop, Parse, ipaddress, .
        ipaddrword := (ipaddrword * 256) + A_LoopField
    SendMessage IPM_SETADDRESS, 0, ipaddrword,, ahk_id %hControl%

    static WM_USER := 0x400
    static IPM_GETADDRESS := WM_USER + 102

    VarSetCapacity(addrword, 4)
    SendMessage IPM_GETADDRESS, 0, &addrword,, ahk_id %hControl%
    Return NumGet(addrword, 3, "UChar") "." NumGet(addrword, 2, "UChar") "." NumGet(addrword, 1, "UChar") "." NumGet(addrword, 0, "UChar")