유형 정보를 COM 객체로부터 열람합니다.
VarType := ComObjType(ComObject) ; [v1.0.91+] 필요 IName := ComObjType(ComObject, "Name") IID := ComObjType(ComObject, "IID") CName := ComObjType(ComObject, "Class") ; [v1.1.26+] 필요 CLSID := ComObjType(ComObject, "CLSID") ; [v1.1.26+] 필요
COM 객체 또는 유형 있는 값을 담고 있는 포장 객체.
The second parameter is a string indicating the type information to retrieve.
The return value depends on the value of Param2:
Param2 | 반환 값 |
---|---|
생략 | [v1.0.91+]: An integer variant type code indicating the type of value contained by the COM wrapper object. |
"Name" | The name of the object's default interface. |
"IID" | The globally unique identifier (GUID) of the object's default interface. |
"Class" | [v1.1.26+]: The object's class name. Note that this is not the same as a Prog ID (a Prog ID is a name used to identify the class in the system registry, or for ComObjCreate). |
"CLSID" | [v1.1.26+]: The globally unique identifier (GUID) of the object's class. Classes are often registered by CLSID under the HKCR\CLSID registry key. |
An empty string is returned if either parameter is invalid or if the requested type information could not be retrieved.
VT_EMPTY := 0 ; 값 없음 VT_NULL := 1 ; SQL-스타일의 널 VT_I2 := 2 ; 16-비트 유부호 정수 VT_I4 := 3 ; 32-비트 유부호 정수 VT_R4 := 4 ; 32-비트 부동 소수점 수 VT_R8 := 5 ; 64-비트 부동 소수점 수 VT_CY := 6 ; 화폐 VT_DATE := 7 ; 날짜 VT_BSTR := 8 ; COM 문자열 (고정 길이의 유니코드 문자열) VT_DISPATCH := 9 ; COM 객체 VT_ERROR := 0xA ; 에러 코드 (32-비트 정수) VT_BOOL := 0xB ; 불리언 True (-1) 또는 False (0) VT_VARIANT := 0xC ; VARIANT (반드시 VT_ARRAY 또는 VT_BYREF와 조합해 사용해야 함) VT_UNKNOWN := 0xD ; IUnknown 인터페이스 포인터 VT_DECIMAL := 0xE ; (지원 안함) VT_I1 := 0x10 ; 8-비트 유부호 정수 VT_UI1 := 0x11 ; 8-비트 무부호 정수 VT_UI2 := 0x12 ; 16-비트 무부호 정수 VT_UI4 := 0x13 ; 32-비트 무부호 정수 VT_I8 := 0x14 ; 64-비트 유부호 정수 VT_UI8 := 0x15 ; 64-비트 무부호 정수 VT_INT := 0x16 ; 유부호 머신 정수 VT_UINT := 0x17 ; 무부호 머신 정수 VT_RECORD := 0x24 ; 사용자-정의 유형 -- 지원하지 않음 VT_ARRAY := 0x2000 ; SAFEARRAY VT_BYREF := 0x4000 ; 또다른 유형의 값을 가리키는 포인터 /* VT_ARRAY와 VT_BYREF는 또다른 값과 조합하여 (비트별 OR을 사용) 정확한 유형을 지정합니다. 예를 들면, 0x2003는 32-비트 유부호 정수로 구성된 SAFEARRAY로 식별되고 0x400C는 VARIANT를 가리키는 포인터로 식별됩니다. */
대부분의 경우, COM 객체의 메쏘드나 특성으로부터 반환된 값은 오토핫키가 지원하는 적절한 데이터 유형으로 변환됩니다. 구체적으로 처리가 되지 않는 유형은 VariantChangeType를 통하여 강제로 문자열로 변환됩니다; 이것이 실패하거나 variant 유형에 VT_ARRAY 또는 VT_BYREF 플래그가 들어 있다면, 대신에 값과 그의 유형을 모두 담고 있는 객체가 반환됩니다.
모든 변수 x에 대하여, 만약 ComObjType(x)
가 정수를 돌려주면, x에는 COM 객체 포장자가 들어 있습니다.
If Param2 is "Name"
or "IID"
, type information is retrieved via the IDispatch::GetTypeInfo interface method. ComObject's variant type must be VT_DISPATCH.
If Param2 is "Class"
or "CLSID"
, type information is retrieved via the IProvideClassInfo::GetClassInfo interface method. ComObject's variant type must be VT_DISPATCH or VT_UNKNOWN, and the object must implement the IProvideClassInfo interface (some objects do not).
ComObjValue(), ComObjCreate(), ComObjGet(), ComObjActive()
Reports various type information of a COM object.
d := ComObjCreate("Scripting.Dictionary") VarType := ComObjType(d) IName := ComObjType(d, "Name") IID := ComObjType(d, "IID") CName := ComObjType(d, "Class") ; [v1.1.26+] 필요 CLSID := ComObjType(d, "CLSID") ; [v1.1.26+] 필요 MsgBox % "Variant type:`t" VarType . "`nInterface name:`t" IName "`nInterface ID:`t" IID . "`nClass name:`t" CName "`nClass ID (CLSID):`t" CLSID