recherche GUID désespérément

Programmation d'applications complexes
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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?
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message 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.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Merci. :-D
Répondre