Base de registre

cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 - 15 août 2006 à 14:33
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 16 août 2006 à 00:12
    Bonjour

J'aimerais savoir si une methode existe pour verifier l'existence d'unclé dans la base de registre ou d'un chemin.

Merci

[PaTaTe]

13 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
15 août 2006 à 17:31
Salut,

Tu dois passer par l'API RegOpenKeyEx :

Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias _
    "RegOpenKeyExA" (ByVal hKey As Long, _
    ByVal lpSubKey As String, ByVal ulOptions As Long, _
    ByVal samDesired As Long, phkResult As Long) As Long

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
15 août 2006 à 18:07
Merci je vais tester ça.

J'ai une autre question concernant la base de registre (au lieu de reposter je prefere le faire ici)

Je sais ajouter une commande au menu contextuel sur un type precis de fichier mais j'aimerais pouvoir le faire sur un repertoire mais je ne sais pas comment on procede, ca m'a l'air different

[PaTaTe]
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
15 août 2006 à 18:12
C'est possible mais je n'ai jamais utilisé cette option.
En fait, c'est quand on fait un click droit sur un fichier ou dossier, tu veux rajouter un Item, c'est ça ??
Si oui je regarde, et précise moi comment tu fais pour le fichier, ça m'aidera peut-être dans les recherches !

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
15 août 2006 à 18:37
Salut tout le monde
PaTaTe va donc faire un tour à ici pour ta question des menus contextuels.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
15 août 2006 à 21:03
[auteurdetail.aspx?ID=647037 mortalino]



J'utilise ces fonctions (si tu as mieux je suis preuneur evidement

Public Sub RegLire(CheminComplet As String, Destination As String)
Dim WshShell As Object
Set WshShell = CreateObject("Wscript.Shell")
Destination = WshShell.RegRead(CheminComplet)
Set WshShell = Nothing
End Sub

Public Sub RegEcrire(StyleDeClé As Integer, CheminComplet As String, Valeur As String)
Dim WshShell As Object
Set WshShell = CreateObject("Wscript.Shell")
If StyleDeClé = 0 Then WshShell.RegWrite CheminComplet, Valeur
If StyleDeClé = 1 Then WshShell.RegWrite CheminComplet, Valeur, "REG_DWORD"
If StyleDeClé = 2 Then WshShell.RegWrite CheminComplet, Valeur, "REG_BINARY"
Set WshShell = Nothing
End Sub

Public Sub RegSupprimer(CheminComplet As String)
Dim WshShell As Object
Set WshShell = CreateObject("Wscript.Shell")
WshShell.RegDelete CheminComplet
Set WshShell = Nothing
End Sub



[PaTaTe]
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
15 août 2006 à 21:48
Tant que ça fonctionne c'est le principal. Moi je passe par les APIs mais je ne sais pas quelle méthode est plus performante.
Il me semble avoir lu qu'avec ta méthode ton appli risquait de se faire contrer par un bon anti-virus. A voir..

Concernant ta 2nde questions, voit le lien que Willy t'as filé, c'est en anglais mais pas très complexe à comprendre.

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
15 août 2006 à 21:50
Burk !!
Utilise dont les fonctions dédiées à la base de registre ici
Il y a énormément d'exemples sur le site fait une recherche !
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
15 août 2006 à 21:57
Willy !

C'est quoi ça :
LONGRegCreateKeyEx(
HKEYhKey,
LPCTSTRlpSubKey,
DWORDReserved,
LPTSTRlpClass,
DWORDdwOptions,
REGSAMsamDesired,
LPSECURITY_ATTRIBUTESlpSecurityAttributes,
PHKEYphkResult,
LPDWORDlpdwDisposition
);

?? sur ton lien, je reconnais bien les nom des fonctions API mais je ne
vois pas vraiment comment elles sont utilisées. Merci de ton
éclairsissement.

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
15 août 2006 à 22:37
[auteurdetail.aspx?ID=647037 mortalino]


J'avais pas pensé à ça. Si tu peux me donner les methode que tu utilise, ca serait cool :)

[auteurdetail.aspx?ID=941 Willi]
Ton lien est bien mais les exemples d'exploitation ne sont pas donné meme pas les API elle en VB

[PaTaTe]
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
15 août 2006 à 23:11
Regardez dans la visionneuse d'API fournie avec VB et charger le fichier Win32api.txt il y a les déclarations des fonctions, des constantes et des structures. Pile poil tout ce dont on a besoin quand on utilise les fonctions de l'API. Bien sur il convient également d'aller sur la msdn pour avoir une description détaillée des fonctions et de la manière dont elles s'utilisent.

Voila Patate tu as tout ce qu'il te faut en plus des nombreux exemples sur le site.
Regarde également sur Allapi
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
15 août 2006 à 23:21
PaTaTe, utilise cette source ! C'est sous forme de fonctions.

Willy, je galère un peu, les APIs, je ne m'y met que depuis peu et pour apprendre, j'essaie des trucs simples, comme :

Declare Function AnimateWindow Lib
"user32" ( _
                 ByVal hWnd As Long,
_
                 ByVal
dwTime As Long, _
                 ByVal dwFlags As Long) As Long
Private Sub Form_Load()
' Cet appel de fonction fera s'afficher progressivement la
' fenêtre
de son centre vers ses bords
Debug.Print
AnimateWindow(Me.hWnd, 10000, &H10 Or &H20000)
End Sub

ET bien entendu, ça ne fonctionne pas ! Pas très motivant tout ça !
(c'est un copier coller d'un exemple, c'est pour ça que c'est rageant...)

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
15 août 2006 à 23:55
Mortalino,
Regarde ici j'ai fais un exemple
++
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 août 2006 à 00:12
Salut Willy,

Ton projet d'essai est très concluant. Je vais essayer de le refaire les yeux fermés.

... 2 minutes plus tard  ;)

Bon ça y'est avec mon code ^^ ça fonctionne, c'est un peu plus lent.(logique).

Il ne marchait pas tout à l'heure car je l'avais mis dans le Load de la Main Form.

Merci encore pour tes lumières Willy !!

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
0
Rejoignez-nous