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%