ComObjType()

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

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

ComObjType() [v1.0.91+][編集]

AHKL COMオブジェクトの型情報を取得する。

VarType := ComObjType(ComObject)
Name    := ComObjType(ComObject, "Name")
IID     := ComObjType(ComObject, "IID")

Parameters[編集]

引数名 説明
ComObject COMオブジェクトまたは typed value を含むラッパーオブジェクト。
VarType 値の型を示す整数。下記参照。
Name インターフェース型名。
IID グローバル一意識別子(GUID)インタフェースタイプを表す。

戻り値[編集]

第2パラメタの省略時は、ラッパーオブジェクトに格納されている値のバリアント型情報が返る。

第2パラメタが "Name" または "IID"、COMオブジェクト(variant type VT_DISPATCH)を格納するラッパーオブジェクトの場合は、COMオブジェクトのプライマリインターフェイスでの型名・識別子が返る。

不正なパラメタであったり、エラーが生じた場合は、空白文字列が返る。

バリアント型の定数[編集]

型名 整数 説明
VT_EMPTY 0 値なしNo value
VT_NULL 1 SQL-style Null
VT_I2 2 16-bit signed int
VT_I4 3 32-bit signed int
VT_R4 4 32-bit floating-point number
VT_R8 5 64-bit floating-point number
VT_CY 6 Currency
VT_DATE 7 Date
VT_BSTR 8 COM string (Unicode string with length prefix)
VT_DISPATCH 9 COM object
VT_ERROR 0xA Error code (32-bit integer)
VT_BOOL 0xB Boolean True (-1) or False (0)
VT_VARIANT 0xC VARIANT (must be combined with VT_ARRAY or VT_BYREF)
VT_UNKNOWN 0xD IUnknown interface pointer
VT_DECIMAL 0xE (not supported)
VT_I1 0x10 8-bit signed int
VT_UI1 0x11 8-bit unsigned int
VT_UI2 0x12 16-bit unsigned int
VT_UI4 0x13 32-bit unsigned int
VT_I8 0x14 64-bit signed int
VT_UI8 0x15 64-bit unsigned int
VT_INT 0x16 Signed machine int
VT_UINT 0x17 Unsigned machine int
VT_RECORD 0x24 User-defined type
VT_ARRAY 0x2000 SAFEARRAY
VT_BYREF 0x4000 Pointer to another type of value

VT_ARRAYとVT_BYREFは別の値(ビット単位のOR)と組み合わして正確な型を指定します。
例えば、0x2003は32ビット符号付き整数のSAFEARRAYを識別、0x400CはVARIANTへのポインタを識別する。

Remarks[編集]

最も一般的なケースでは、COMオブジェクトのメソッドやプロパティの戻り値は、AutoHotkeyでサポートする適切な型に変換される。 特殊にハンドルされていない型は VariantChangeType を介して文字列型に変換される。 これに失敗した場合や、バリアント型が VT_ARRAY や VT_BYREF フラグを持っていた場合は、値とその型情報の双方を持つオブジェクトが戻り値となる。

ComObjType(x) が整数値を返す場合、x はCOMオブジェクトのラッパーである。

Related[編集]

ComObjValue(), ComObjCreate(), ComObjGet(), ComObjActive()

Example(s)[編集]

d := ComObjCreate("Scripting.Dictionary")
VarType := ComObjType(d)          ; Always 9 for script-callable objects.
Name    := ComObjType(d, "Name")  ; Only valid for script-callable objects.
IID     := ComObjType(d, "IID")   ; As above.
MsgBox Variant type:`t%VarType%`nType name:`t%Name%`nInterface ID:`t%IID%