Page 2 sur 2

Publié : dim. 06/févr./2005 20:10
par Anonyme2
Il faut voir les interfaces comme des fonctions normales, elles existent dans les fichiers dll.

Dans le registre il y a parfois la valeur identifiant telle ou telle interface (IDD_xxxxxxx).
C'est cette valeur qui va être passée aux méthodes pour dire quel pointeur on récupère (en fait sur quel objet de quelle interface il pointe)

Regarde le code que j'avais fait avec IShellefolder.

Tu as en data la valeur identifiant l'interface que tu vas utiliser

Code : Tout sélectionner

DataSection
   ; Interface IShellFolder;
   ; helpstring("IShellFolder"),
   ; uuid(000214E6-0000-0000-C000-000000000046)
   
   IID_IShellFolder : ; cléf du registre mise sous la forme de DATA
      Data.l $000214E6
      Data.w $0000, $0000
      Data.b $C0, $00, $00, $00, $00, $00, $00, $46
EndDataSection
par exemple, la méthode BindToObject de l'interface IshellFolder retrouve un objet IShellFolder pour un sous-dossier du Shell. On doit passer cet identifiant à la méthode en 3eme paramètre pour avoir le bon résultat.

Code : Tout sélectionner

If ppshf\BindToObject(ppidl, 0, ?IID_IShellFolder, @ppvOut.IShellFolder) = #NOERROR
Certaine méthodes retournent des pointeur sur des objets de type différents en fonction justement de l'indentifiant passé en paramètre.

C'est le cas par exemple de la méthode GetUIObjectOf de l'interface IShellFolder (qui permet en particulier de récupérer un pointeur sur un objet de type IExtractIcon).

J'ai 6345 identifiants d'interfaces dans le registre (sous XP) sur mon ordi.

Publié : dim. 06/févr./2005 20:30
par nico
Si j'ai une interface non déclarée dans le registre, elle va la chercher dans la DLL correspondante mais comment fait elle pour la retrouvée? , je pensais justement que c'était le registre qui permettait de collecter toutes ces interfaces?

Publié : lun. 07/févr./2005 13:17
par Anonyme2
Apparement non car IDD_IExtractIcon n'est pas dans mon registre mais ça fonctionne quand même avec PB
Je pense que cette clée n'est qu'une valeur d'identification.

Publié : lun. 07/févr./2005 17:02
par Anonyme2
Voici la définition de MS sur les identifiants des interfaces
Interface identifier (IID)

A globally unique identifier (GUID) associated with an interface. Some functions take IIDs as parameters to allow the caller to specify which interface pointer should be returned.

Publié : mer. 27/juil./2005 12:10
par gansta93
Au risque de paraître boulet, mais j'ai cherché sur internet oleview, oleview32, et jamais un lien pour le télécharger... où puis-je le trouver ?

Merci.

Publié : mer. 27/juil./2005 12:19
par nico

Publié : mer. 27/juil./2005 15:31
par gansta93
Merci. :-D