ComObject

Erstellt ein COM-Objekt.

ComObj := ComObject(CLSID , IID)

ComObject selbst ist eine Klasse, die von ComValue abgeleitet ist, aber nur zum Erstellen oder Identifizieren von COM-Objekten verwendet wird.

Parameter

CLSID

Typ: Zeichenkette

CLSID oder eine visuell lesbare ProgID des COM-Objekts.

IID

Typ: Zeichenkette

Wenn weggelassen, wird standardmäßig "{00020400-0000-0000-C000-000000000046}" (IID_IDispatch) verwendet. Andernfalls geben Sie den Identifikator eines Interfaces an, das zurückgegeben werden soll. In den meisten Fällen wird dies weggelassen.

Rückgabewert

Typ: Objekt

Diese Funktion gibt ein COM-Wrapper-Objekt zurück, dessen Typ vom IID-Parameter abhängt.

IIDKlasseVariantentypBeschreibung
IID_IDispatch ComObject VT_DISPATCH (9) Erlaubt dem Skript, Eigenschaften und Methoden des Objekts mit normaler Objektsyntax aufzurufen.
Andere IID ComValue VT_UNKNOWN (13) Stellt nur eine Ptr-Eigenschaft bereit, mit der das Objekt an DllCall oder ComCall übergeben werden kann.

Fehlerbehandlung

Bei Misserfolg wird eine Ausnahme ausgelöst, z.B. wenn ein Parameter ungültig ist oder das Objekt nicht das angegebene Interface in IID unterstützt.

ComValue, ComObjGet, ComObjActive, ComObjConnect, ComObjArray, ComObjQuery, ComCall, CreateObject (Microsoft Docs)

Beispiele

Eine lange Liste von Beispielen finden Sie unter: https://www.autohotkey.com/forum/topic61509.html.

Startet eine Instanz des Internet Explorers, macht ihn sichtbar und navigiert zu einer Webseite.

ie := ComObject("InternetExplorer.Application")
ie.Visible := true  ; Funktioniert nicht korrekt unter IE7.
ie.Navigate("https://www.autohotkey.com/")

Ruft den Pfad des aktuellen Hintergrundbildes (Wallpaper) auf dem Desktop ab.

AD_GETWP_BMP := 0
AD_GETWP_LAST_APPLIED := 0x00000002
CLSID_ActiveDesktop := "{75048700-EF1F-11D0-9888-006097DEACF9}"
IID_IActiveDesktop := "{F490EB00-1240-11D1-9888-006097DEACF9}"
cchWallpaper := 260
GetWallpaper := 4

AD := ComObject(CLSID_ActiveDesktop, IID_IActiveDesktop)
wszWallpaper := Buffer(cchWallpaper * 2)
ComCall(GetWallpaper, AD, "ptr", wszWallpaper, "uint", cchWallpaper, "uint", AD_GETWP_LAST_APPLIED)
Wallpaper := StrGet(wszWallpaper, "UTF-16")
MsgBox "Wallpaper: " Wallpaper