ComObjType() [v1.0.91+]

유형 정보를 COM 객체로부터 열람합니다.

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

매개변수

ComObject

COM 객체 또는 유형 있는 값을 담고 있는 포장 객체.

VarType

값의 유형을 나타내는 정수. 아래 참조.

Name

인터페이스 유형 이름.

IID

인터페이스 유형을 나타내는 전역적으로 유일한 식별자 (GUID)

반환 값

두 번째 매개변수를 생략하면, 포장 객체에 담긴 variant 유형의 값이 반환됩니다.

두 번째 매개변수가 "Name" 또는 "IID"이고 포장 객체에 COM 객체가 들어 있으면 (variant 유형 VT_DISPATCH), 그 COM 객체의 유형 이름 또는 그의 첫 인터페이스의 식별자가 반환됩니다.

매개변수가 유효하지 않거나 에러가 일어나면, 빈 문자열이 반환됩니다.

Variant 유형의 상수들

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 객체 포장자가 들어 있습니다.

관련 항목

ComObjValue, ComObjCreate, ComObjGet, ComObjActive

예제

d := ComObjCreate("Scripting.Dictionary")
VarType := ComObjType(d)          ; 언제나 9는 스크립트를 호출할 수 있는 객체를 뜻합니다.
Name    := ComObjType(d, "Name")  ; 스크립틀 호출할 수 있는 객체에만 유효합니다.
IID     := ComObjType(d, "IID")   ; 위와 같습니다.
MsgBox Variant type:`t%VarType%`nType name:`t%Name%`nInterface ID:`t%IID%
선택 | 내려받기