Ruft Typinformationen eines COM-Objekts ab.
Info := ComObjType(ComObj , InfoTyp)
Typ: Objekt
Ein Wrapper-Objekt, das ein COM-Objekt oder einen typisierten Wert enthält. Weitere Informationen finden Sie unter ComValue.
Typ: Zeichenkette
Wenn weggelassen, wird ein ganzzahliger Variantentypcode abgerufen, der den Typ des im COM-Wrapper-Objekt enthaltenen Wertes wiedergibt. Andernfalls geben Sie eine der folgenden Zeichenketten an, die die abzurufenden Typinformation wiedergibt:
Name: Der Name des Standard-Interface des Objekts.
IID: Der globale eindeutige Identifikator (GUID) des Standard-Interface des Objekts.
Class: Der Klassenname des Objekts. Beachten Sie, dass dies nicht dasselbe ist wie eine Prog-ID (eine Prog-ID ist ein Name, der zur Identifizierung der Klasse in der System-Registry oder für ComObject verwendet wird).
CLSID: Der globale eindeutige Identifikator (GUID) der Klasse des Objekts. Klassen sind oft via CLSID im HKCR\CLSID
-Registry-Schlüssel registriert.
Typ: Integer oder Zeichenkette
Der Rückgabewert ist vom InfoTyp-Wert abhängig. Es wird eine leere Zeichenkette zurückgegeben, wenn der Parameter ungültig ist oder wenn die angeforderten Typinformationen nicht abgerufen werden konnten.
COM verwendet die folgenden Werte, um grundlegende Datentypen zu identifizieren:
VT_EMPTY := 0 ; Kein Wert VT_NULL := 1 ; SQL-artige Null VT_I2 := 2 ; vorzeichenfähiger 16-Bit-Integer VT_I4 := 3 ; vorzeichenfähiger 32-Bit-Integer VT_R4 := 4 ; 32-Bit-Floating-Point-Zahl VT_R8 := 5 ; 64-Bit-Floating-Point-Zahl VT_CY := 6 ; Währung VT_DATE := 7 ; Datum VT_BSTR := 8 ; COM-Zeichenkette (Unicode mit Längenpräfix) VT_DISPATCH := 9 ; COM-Objekt VT_ERROR := 0xA ; Fehlercode (32-Bit-Integer) VT_BOOL := 0xB ; Boolesches True (-1) oder False (0) VT_VARIANT := 0xC ; VARIANT (in Kombination mit VT_ARRAY oder VT_BYREF) VT_UNKNOWN := 0xD ; IUnknown-Interface-Pointer VT_DECIMAL := 0xE ; (nicht unterstützt) VT_I1 := 0x10 ; vorzeichenfähiger 8-Bit-Integer VT_UI1 := 0x11 ; vorzeichenloser 8-Bit-Integer VT_UI2 := 0x12 ; vorzeichenloser 16-Bit-Integer VT_UI4 := 0x13 ; vorzeichenloser 32-Bit-Integer VT_I8 := 0x14 ; vorzeichenfähiger 64-Bit-Integer VT_UI8 := 0x15 ; vorzeichenloser 64-Bit-Integer VT_INT := 0x16 ; vorzeichenfähiger Maschinen-Integer VT_UINT := 0x17 ; vorzeichenloser Maschinen-Integer VT_RECORD := 0x24 ; Benutzerdefinierter Typ -- NICHT UNTERSTÜTZT VT_ARRAY := 0x2000 ; SAFEARRAY VT_BYREF := 0x4000 ; Pointer, der auf einen anderen Wertetyp verweist /* VT_ARRAY und VT_BYREF müssen mit anderen Werten kombiniert werden (via bitweisem OR), um den exakten Typ anzugeben. Zum Beispiel ist 0x2003 ein SAFEARRAY mit vorzeichenfähigen 32-Bit-Integern und 0x400C ein Pointer, der auf ein VARIANT verweist. */
In den meisten Fällen werden Werte, die von einer Methode oder Eigenschaft eines COM-Objekts zurückgegeben werden, in einen für AutoHotkey geeigneten Datentyp umgewandelt. Unbehandelte Typen werden via VariantChangeType in Zeichenketten gezwängt; wenn das fehlschlägt oder der Variantentyp das VT_ARRAY- oder VT_BYREF-Flag enthält, wird stattdessen ein Objekt zurückgegeben, das sowohl den Wert als auch dessen Typ enthält.
Wenn ComObjType(x)
einen Integer zurückgibt, enthält x einen COM-Objekt-Wrapper.
Wenn InfoTyp "Name"
oder "IID"
ist, wird die Typinformation über die Interface-Methode IDispatch::GetTypeInfo abgerufen. Der Variantentyp von ComObj muss VT_DISPATCH sein.
Wenn InfoTyp "Class"
oder "CLSID"
ist, wird die Typinformation über die Interface-Methode IProvideClassInfo::GetClassInfo abgerufen. Der Variantentyp von ComObj muss VT_DISPATCH oder VT_UNKNOWN sein, und das Objekt muss das IProvideClassInfo-Interface implementieren (einige Objekte tun das nicht).
ComObjValue, ComValue, ComObject, ComObjGet, ComObjActive
Meldet verschiedene Typinformationen eines COM-Objekts.
d := ComObject("Scripting.Dictionary") MsgBox ( "Variantentyp:`t" ComObjType(d) " Interfacename:`t" ComObjType(d, "Name") " Interface-ID:`t" ComObjType(d, "IID") " Klassenname:`t" ComObjType(d, "Class") " Klassen-ID (CLSID):`t" ComObjType(d, "CLSID") )