Diese Funktion ist experimentell. Es kann sein, dass sie nicht funktioniert oder Fehler enthält. Außerdem kann es sein, dass sie ohne Hinweis geändert oder entfernt wird.

BITTE KEINE FEHLER ODER NEUE GEWÜNSCHTE FEATURE FÜR DIE FUNKTION MELDEN. VERWENDUNG AUF EIGENE GEFAHR

Funktionreferenz


ObjCreateInterface

Beschreibung anzeigen in

Erzeugt eine Referenz zu einem Objekt aus dem angegebenen Klassennamen/Object-Pointer, Interface-Identifier und Bezeichnungsstring.

ObjCreateInterface ( "CLSID" , "IID" [, "interface_description",[flag = True]] )

Parameter

CLSID Klassenidentifizierer oder Object-Pointer. Der Klassenidentifizierer kann eine ProgID oder Stringrepräsentation der CLSID sein.
IID Stringrepräsentation des Interface-Identifiers.
interface_description [optional] String der die v-table des Objects bezeichnet. Das Default Keyword kann benutzt werden um auf IDispatch für dual interfaces zuzugreifen.
flag [optional] Der Standardwert ist True, was bedeutet dass das Object-Interface Eigenschaften von IUnknown erbt.

Rückgabewert

Erfolg: Ein Objekt.
Fehler: Setzt das @error Flag auf ungleich null.

Bemerkungen

ObjCreateInterface() erzeugt Objekte mit Methoden die im Interface-Bezeichnungsstring aufgelistet sind.
Bei COM Objekten (IUnknown basiert) sind die ersten drei Methoden immer QueryInterface, AddRef und Release. Diese dürfen nicht im Bezeichnungsstring spezifiziert werden.

Methoden die im Bezeichnungsstring aufgelistet sind, müssen in der v-table Reihenfolge des Interfaces sein. Falls eine ungültige oder fehlerhafte Bezeichnung angegeben wird, kann das zur Instabilität oder zum Absturz von AutoIt führen.

Das Format des Bezeichnungsstrings ist:
$sTagInterface = "MethodName1 RetType(ParamType1;ParamType2;...); MethodName2 RetType(..."

Standardmäßig, benutzt AutoIt die 'stdcall' Aufrufkonvention für COM. Um 'cdecl' zu benutzen muss ein ':cdecl' nach dem Rückgabetyp angegeben werden.

Gültige Typen sind:

Typ Details
none kein Wert (nur für Rückgabetyp gültig - äquivalent zu void in C)
byte ein vorzeichenloser 8 bit Integer
boolean ein vorzeichenloser 8 bit Integer
short ein 16 bit Integer
word, ushort ein vorzeichenloser 16 bit Integer
int, long ein 32 bit Integer
bool ein 32 bit Integer
dword, ulong, uint ein vorzeichenloser 32 bit Integer
hresult ein 32 bit Integer
int64 ein 64 bit Integer
uint64 ein vorzeichenloser 64 bit Integer
ptr ein allgemeiner Pointer (void *)
hwnd ein Fensterhandle (pointer)
handle ein Handle (pointer)
float eine Gleitkommazahl mit einfacher Genauigkeit
double eine Gleitkommazahl mit doppelter Genauigkeit
int_ptr, long_ptr, lresult, lparam ein Integer, groß genug um einen Pointer zu enthalten wenn die x86 or x64 Versionen von AutoIt benutzt werden.
uint_ptr, ulong_ptr, dword_ptr, wparam ein vorzeichenloser Integer, groß genug um einen Pointer zu enthalten wenn die x86 or x64 Versionen von AutoIt benutzt werden.
str ein ANSI String (ein Minimum von 65536 chars wird reserviert).
wstr ein UNICODE wide character String (ein Minimum von 65536 chars wird reserviert).
bstr ein zusammengesetzter Datentyp der aus einem Längenpräfix, einem Datenstring und einem Endzeichen besteht.
variant eine tagged-Union welche jeden anderen Datentyp repräsentieren kann.
idispatch, object ein zusammengesetzter Datentyp der ein Object mit IDispatch Interface repräsentiert.
clsid 128-bit Integer in Form eines GUID Strings
struct Struktur die mit DllStructCreate() erstellt wurde
* Um einen Datentypen via Referenz (Pointer) zu übergeben muss * an den Datentyp angefügt werden. Beispiel: "int*" übergibt einen Pointer zu einem "int" Typ.

Siehe Obj/COM Reference für mehr Informationen über Objekte.

Verwandte Funktionen

ObjCreate

Beispiel

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Deklariert die CLSID, IID und Interfacebezeichnung für ITaskbarList.
    ; Es ist nicht nötig die Mitglieder von IUnknown zu beschreiben.
    Local Const $sCLSID_TaskbarList = "{56FDF344-FD6D-11D0-958A-006097C9A090}"
    Local Const $sIID_ITaskbarList = "{56FDF342-FD6D-11D0-958A-006097C9A090}"
    Local Const $sTagITaskbarList = "HrInit hresult(); AddTab hresult(hwnd); DeleteTab hresult(hwnd); ActivateTab hresult(hwnd); SetActiveAlt hresult(hwnd);"

    ; Erstellt das Objekt.
    Local $oTaskbarList = ObjCreateInterface($sCLSID_TaskbarList, $sIID_ITaskbarList, $sTagITaskbarList)

    ; Initialisiert das iTaskbarList Objekt.
    $oTaskbarList.HrInit()

    ; Startet den Editor.
    Run("notepad.exe")

    ; Wartet auf das Editor Fenster und liest dessen Handle aus.
    Local $hNotepad = WinWait("[CLASS:Notepad]")

    ; Weist den User daraufhin, dass er hinsehen soll.
    MsgBox($MB_SYSTEMMODAL, "", "Schau auf die Taskbar und du solltest einen Eintrag für den Editor finden." & @CRLF & @CRLF & "OK drücken um fortzufahren.")

    ; Löscht den Editor Eintrag aus der Taskbar.
    $oTaskbarList.DeleteTab($hNotepad)

    ; Weist den User daraufhin, dass er hinsehen soll.
    MsgBox($MB_SYSTEMMODAL, "", "Schau auf die Taskbar. Dort sollte nun kein Eintrag mehr für den Editor vorhanden sein obwohl er immer noch läuft." & @CRLF & @CRLF & "OK drücken um fortzufahren.")

    ; Schließt den Editor.
    WinClose($hNotepad)
EndFunc   ;==>Example