Attention: Cette fonction est expérimentale. Elle peut ne pas fonctionner, contenir des bugs, ou peut être modifiée ou enlevée sans préavis.
NE PAS SIGNALER LES BUGS OU DES PROPOSITIONS DE MODIFICATION POUR CETTE FONCTION.

Functions > ObjCOM >


ObjCreateInterface

Crée une référence à un objet à partir du pointeur de classe ou d'objet, de l'identifiant d'interface et d'une chaîne de description.

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

Paramètres

CLSID Identifiant de la classe ou du pointeur sur l'objet. Si CLSID est un identifiant de classe il peut être ProgID ou la chaîne représentant CLSID.
IID Chaîne représentant l'identifiant de l'interface.
interface_description [optionnel] Chaîne décrivant la v-table de l'objet. Utiliser le mot-clé Default pour accéder à IDispatch pour les interfaces duales.
flag [optionnel] La valeur par défaut est True, ce qui signifie que l'interface de l'objet hérite de IUnknown.

Valeur de retour

Succès: Retourne un objet.
Échec: Définit @error <> 0.

Remarques

ObjCreateInterface() crée des objets avec des méthodes qui sont énumérées dans la chaîne description de l'interface.
Pour les objets COM (basés IUnknown) les trois premières méthodes sont toujours QueryInterface, AddRef and Release. Ne les spécifiez pas dans les chaînes de description.

Les méthodes énumérées dans la chaîne de description doivent être dans l'orde de la v-table de l'interface. Si vous fournissez une description invalide ou une description incorrecte, AutoIt peut devenir instable ou se bloquer.

Format de la chaîne de description:
$sTagInterface = "MethodName1 RetType(ParamType1;ParamType2;...); MethodName2 RetType(..."

Par défaut, AutoIt utilise la convention d'appel 'stdcall' pour COM. Pour utiliser 'cdecl' placez ':cdecl' après le type de retour.

Les Types Valides sont:
Type Détails
none aucune valeur (valide seulement pour le type de retour - équivalent à void en C)
byte, boolean un entier 8 bits non signé
short un entier 16 bits
word, ushort un entier 16 bits non signé
int, long, bool un entier 32 bits
dword, ulong, uint un entier 32 bits non signé
hresult un entier 32 bits
int64 un entier 64 bits
uint64 un entier 64 bits non signé
ptr un pointer en général (void *)
hwnd un handle de fenêtre (pointeur)
handle un handle (pointeur)
float un nombre simple précision en virgule flottante
double un nombre double précision en virgule flottante
int_ptr, long_ptr, lresult, lparam un entier assez grand pour contenir un pointeur lors de l'exécution des versions x86 ou x64 de AutoIt.
uint_ptr, ulong_ptr, dword_ptr, wparam un entier non signé assez grand pour contenir un pointeur lors de l'exécution des versions x86 ou x64 de AutoIt.
str une chaîne ANSI (un minimum de 65536 caractères sont alloués).
wstr une chaîne de caractères larges UNICODE (un minimum of 65536 caractères sont alloués).
bstr un type de données composées constitué d'une longueur, d'une chaîne de données et d'un caractère de terminaison
variant une union étiqueté qui peut être utilisée pour représenter n'importe quel autre type de données
idispatch, object un type de données composées qui représente un objet avec l'interface IDispatch
clsid un entier 128 bits dans le format d'une chaîne GUID
struct structure créée avec DllStructCreate()
* Ajouter * à la fin d'un autre type pour le passer en référence. Par exemple "int*" passe un pointeur dans un type "int".

Consultez Obj/COM Reference pour plus d'informations sur Objects.

En relation

ObjCreate

Exemple

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Déclare CLSID, IID et descrit l'interface pour ITaskbarList.
    ; Il n'est pas nécessaire de décrire les membres de IUnknown.
    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);"

    ; Création de l'objet.
    Local $oTaskbarList = ObjCreateInterface($sCLSID_TaskbarList, $sIID_ITaskbarList, $sTagITaskbarList)

    ; Initialise l'objet iTaskbarList.
    $oTaskbarList.HrInit()

    ; Exécute le Bloc-notes.
    Run("notepad.exe")

    ; Attend que la fenêtre du Bloc-notes apparaisse et obtient son handle.
    Local $hNotepad = WinWait("[CLASS:Notepad]")

    ; Indique à l'utilisateur ce qu'il faut regarder.
    MsgBox($MB_SYSTEMMODAL, "", "Regardez dans la barre des tâches et vous devriez voir une entrée pour le Bloc-notes." & @CRLF & @CRLF & "Appuyez sur OK pour continuer.")

    ; Supprime le Bloc-notes de la barre des tâches.
    $oTaskbarList.DeleteTab($hNotepad)

    ; Invite l'utilisateur à regarder de nouveau la barre des tâches.
    MsgBox($MB_SYSTEMMODAL, "", "Regardez dans la barre des tâches. Il ne devrait plus y avoir d'entrée pour le Bloc-notes, mais le Bloc-notes est toujours en cours d'exécution." & @CRLF & @CRLF & "Appuyez sur OK pour continuee.")

    ; Ferme le Bloc-notes.
    WinClose($hNotepad)
EndFunc   ;==>Example