recherche GUID désespérément

Programmation d'applications complexes
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

recherche GUID désespérément

Message par hardy »

Ai cherché avec Oleview, et dans le registre : deux valeurs incertaines, et m'en manque deux.
Quelqu'un sait ou les trouver:

IID_IWbemRefresher:
;B60EF4F1-A411-462B-B51E-477CBDBB90B4 (pas sûr)
CLSID_IWbemRefresher:
;DCF33DF4-B510-439F-832A-16B6B514F2A7 (pas sûr)
IID_IWbemConfigureRefresher:
???
IID_IWbemObjectAccess:
???
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Tu fais comment ?
je cherche pour IExtractIcon
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

IWbemRefresher
49353c99-516b-11d1-aea6-00c04fb68820

IWbemConfigureRefresher
49353c92-516b-11d1-aea6-00c04fb68820

IWbemObjectAccess
49353c9a-516b-11d1-aea6-00c04fb68820
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

Merci. :D

Où les as-tu trouvé?
C'est moi qui ai mal regardé dans Oleview?
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

et le CLSID est juste?
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

@ soldat inconnu : j'ai IextractImage, mais pas IExtractIcon.

J'utilise Oleview. (freeware)
Sinon, recherche dans le registre avec regedit.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Pour IExtractIcon :
{7A80E4A8-8005-11D2-BCF8-00C04F72C717}

j'ai chopé ça dans le registre en cherchant ExtractIcon, c'était dans une sous clé CLSID donc ça doit être bon, si quelqu'un peut confirmer :wink:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

CLSID_WbemRefresher
c71566f2-561e-11d1-ad87-00c04fd8fdff

Je me demande pour ton problème le soldat, si tu ne devrais pas partir du code de Denis IEnumIDList dans truc et astuce ?
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

Merci.
J'avais fini par trouver CLSID_WbemRefresher avant de voir ta réponse, mais non sans peine: recherche dans le registre, où ça apparaît sous le titre WMI universal refresher...
Comment t'y es-tu pris?
Un truc penible dans Olewiew : pas de fonction de recherche.
Connaîs-tu un truc du même genre pour obtenir les identifiants en tout genre?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Je ne fais rien d'extraordinaire, Chris met gentiment à disposition les fichiers .h et .idl sur son site; j'ai fais une recherche sur les fichiers idl.

Mais même avec ça, on a pas tout ou alors j'ai un problème avec l'explorer car pour IextractIcon je n'avais pas trouvé.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

j'ai trouvé un exemple sur le net en je sais pas quoi et c'était pas la même valeur que celle que j'ai donné (c'est la seule chose que j'ai compris dedans d'ailleurs)

IExtractIcon : {000214eb-0000-0000-c000-000000000046}
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

c'est vrai, j'ai pas cherché dans les .idl.
Déjà que régulièrement je doit fouiller dans les .h
Faudrait que Microsoft mette à disposition un outil pour récupérer toutes les structures, GUID,..
Il y a la PSDK (que j'ai), mais les constantes ne sont pas accessibles directement. Ca dit quand même où les trouver, mais bon...
Il y avait Apiviewer, mais il n'est plus très à jour.

Faut se débrouiller quoi!
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Il y a 2 outils mis à la dispo par PureBasic, dans le dossier PureBasic\Library SDK

sous-dossier Header Converter --> Header Converter.exe

sous-dossier Interface Importer --> Interface Importer.exe

pour convertir tous ces fichiers h au format PB
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Voici un code qui extrait du registre la valeur IDD_ associée d'une interface si elle exite dans celui-ci

Ne fonctionne que sous XP

Il ya actuellement 1983 interfaces déclarées en PB (windows). Les noms de ces interfaces ne commencent que par les lettres a, d, f, h, i, et _

Si on veut utiliser une interface dont le nom commence par une autre lettre, il faudra la déclarer.

Code : Tout sélectionner

; Auteur : Denis
; Version de PB : 3.92 beta et quelque chose ....
; Date : 06 février 2005
;
; Explication du programme :
; récupère la clée de l'interface (contenue dans le registre) et la met sous la forme de Datas
; dans le presse papier

; Testé avec XP - ne fonctionne que sous XP

Global B$   

Procedure.s GetDATA(Name.s, Value.s)
   ; retourne une chaine de type
   
   ; IID_IShellFolder : ; cléf du registre mise sous la forme de DATA
   ; ; Value.s = "{000214E6-0000-0000-C000-000000000046}"
   ; Data.l $000214E6
   ; Data.w $0000, $0000
   ; Data.b $C0, $00, $00, $00, $00, $00, $00, $46
   
   Nom.s = "IID_" + Name + " :"
   Data1.s = "Data.l $" + Mid(Value, 2, 8)
   Data2.s = "Data.w $" + Mid(Value, 11, 4) + ", $" + Mid(Value, 16, 4)
   Data3.s = "Data.b $" + Mid(Value, 21, 2) + ", $" + Mid(Value, 23, 2)
   For i = 26 To 36 Step 2
      Data3 + ", $" + Mid(Value, i, 2)
   Next i
   ProcedureReturn Nom + Chr(10) + Data1 + Chr(10) + Data2 + Chr(10) + Data3
EndProcedure


Procedure.s Get_IDD_Interface(MonInterface.s) 
If RegOpenKeyEx_(#HKEY_ClASSES_ROOT, "Interface", 0, #KEY_ENUMERATE_SUB_KEYS, @hKey) = #ERROR_SUCCESS
   iSubkey = 0 ; compteur utilisé par RegEnumKeyEx pour énumérer les SubKey
   ; incémenté de 1 à chaque tour de boucle
   lpszName = AllocateMemory(100)  ; le buffer pour la chaine
   lpcchName = 100 ; variable indiquant la taille de la chaine
   lpszValue = AllocateMemory(100)
   pcbValue = 100

   Enum = RegEnumKeyEx_(hKey, iSubkey, lpszName, @lpcchName, 0, 0, 0, @lpftLastWrite)
   B$ = MonInterface + ": Interface non trouvée dans le registre"+ Chr(10)+ Chr(10)

   While Enum <> #ERROR_NO_MORE_ITEMS
      ; on cherche si l'interface est dans le registre
      If RegQueryValue_(hKey, lpszName, lpszValue, @pcbValue) = #ERROR_SUCCESS
        If UCase(PeekS(lpszValue)) = UCase(MonInterface)
            B$ =  "; Interface: " + PeekS(lpszValue) + Chr(10)+ "; Clef " +  PeekS(lpszName) + Chr(10) + GetDATA(PeekS(lpszValue), PeekS(lpszName)) + Chr(10) + Chr(10)
            Break
        EndIf 
      EndIf
      iSubkey + 1 ; on incrémente le compteur
      pcbValue  = 100
      lpcchName = 100
      Enum = RegEnumKeyEx_(hKey, iSubkey, lpszName, @lpcchName, 0, 0, 0, @lpftLastWrite)
   Wend
   FreeMemory(lpszName) : FreeMemory(lpszValue)
   RegCloseKey_(hKey)
   SetClipboardText(B$)
   ProcedureReturn B$
Else
   MessageRequester("RegOpenKeyEx Interface", " a échoué", 16)
   ProcedureReturn ""
EndIf
EndProcedure 




Debug Get_IDD_Interface("IclassFactory")
Debug Get_IDD_Interface("IExtractIcon")
Debug Get_IDD_Interface("IShellFolder")
Debug Get_IDD_Interface("IEnumIDList")
Debug Get_IDD_Interface("WbemConfigureRefresher")
Debug Get_IDD_Interface("IWbemObjectAccess")
Debug Get_IDD_Interface("IWbemRefresher")
End
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Y a un truc que je comprends pas si l'interface n'est pas déclarée dans le registre, le pointeur sur les fonctions on l'obtient comment?
Répondre