Page 1 sur 2
recherche GUID désespérément
Publié : mar. 01/févr./2005 23:29
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:
???
Publié : mar. 01/févr./2005 23:31
par Le Soldat Inconnu
Tu fais comment ?
je cherche pour IExtractIcon
Publié : mar. 01/févr./2005 23:42
par nico
IWbemRefresher
49353c99-516b-11d1-aea6-00c04fb68820
IWbemConfigureRefresher
49353c92-516b-11d1-aea6-00c04fb68820
IWbemObjectAccess
49353c9a-516b-11d1-aea6-00c04fb68820
Publié : mar. 01/févr./2005 23:58
par hardy
Merci.
Où les as-tu trouvé?
C'est moi qui ai mal regardé dans Oleview?
Publié : mer. 02/févr./2005 0:01
par hardy
et le CLSID est juste?
Publié : mer. 02/févr./2005 0:15
par hardy
@ soldat inconnu : j'ai IextractImage, mais pas IExtractIcon.
J'utilise Oleview. (freeware)
Sinon, recherche dans le registre avec regedit.
Publié : mer. 02/févr./2005 11:32
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

Publié : mer. 02/févr./2005 12:39
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 ?
Publié : mer. 02/févr./2005 13:09
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?
Publié : mer. 02/févr./2005 17:51
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é.
Publié : mer. 02/févr./2005 18:48
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}
Publié : mer. 02/févr./2005 19:24
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!
Publié : mer. 02/févr./2005 19:29
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
Publié : dim. 06/févr./2005 13:04
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
Publié : dim. 06/févr./2005 19:50
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?