Erzeugt eine Referenz zu einem Objekt aus dem angegebenen Klassennamen/Object-Pointer, Interface-Identifier und Bezeichnungsstring.
ObjCreateInterface ( "CLSID" , "IID" [, "interface_description",[flag = True]] )
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. |
Erfolg: | Ein Objekt. |
Fehler: | Setzt das @error Flag auf ungleich null. |
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. |
#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