TROUVER LES CLÉS DE REGISTRE QUI CHANGENT

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 20 juil. 2009 à 17:15
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 - 4 août 2009 à 13:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50346-trouver-les-cles-de-registre-qui-changent

Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
4 août 2009 à 13:02
Ravi que cette source serve ^^ (et pas pour du piratage ;) )
Patrice99 je serrais ravi de savoir coder un VB6 portable en .net, si tu as des pistes, elles sont les bienvenues. (oui oui oui , je vais commencer par googeliser tout ça, mais le savoir est fait pour être partagé...)
D'ailleurs, Patrice99, si tu as modifié la dernière version de sorte a la rendre compatible avec le .net, je t'invite à me la faire parvenir. Je la mettrait à disposition des VBiens sur ce site ^^

cordialement,
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
31 juil. 2009 à 16:30
ha j'oubliais maintenant que ça marche je vais donner une bonne note, car ça faisait pas mal de temps que je voulais faire une source similaire (je cherchais où était codé les options d'impression PostScript dans la BR pour faire une installation automatique de mon logiciel Doc2Pdf) : bravo donc !
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
31 juil. 2009 à 16:26
Visual studio 2008 express, c'est bien du .Net, pas du VB6 : j'avais réussi à convertir ta 1ère version en .Net, mais il faut faire quelques modif pas évidentes pour ceux qui connaissent pas. Maintenant ta source fonctionne bien, faudra que je réessaie de la convertir, et je te dirais ce qu'il faut changer pour avoir une version VB6 qui se convertie facilement en .Net (et qui marche toujours :-)
patleguillou Messages postés 4 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 31 juillet 2009
31 juil. 2009 à 16:15
Voici de bonnes questions.
Pour Seven: Ça ressemble à Vista.

Pour visual Studio express, J'ai été sur wikipédia:
http://fr.wikipedia.org/wiki/Visual_Basic_.NET#Les_IDE_.28environnements_de_d.C3.A9veloppements.29

Effectivement ca semble être du .net d'ou le soucis.

Je regarde si la portabilité est possible.
Cordialement
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
31 juil. 2009 à 15:41
Bonjour, je n'ai encore pas eu la joie de travailler avec Windows Seven et ne saurais donc te dire d'où proviens le problème.
Cependant, si tu as un niveau minimum en VB6, tu devrais pouvoir supprimer la partie du code qui utilise le contrôle Hierrarchical Flex Grid. Cette grille permet seulement un affichage sommaire. L'ensemble des informations générées par le programmes sont stoquées dans un fichier log (dans le même répertoire que l'application).

question tout a fait personnelle.
"Visual studio 2008 express" est-ce tjs du VB6 ou est-ce du .net ?
Je ne suis pas persuadé que mon code soit portable en .net


Cordialement
patleguillou Messages postés 4 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 31 juillet 2009
27 juil. 2009 à 10:59
Bonjour,

J'utilise Visual studio 2008 express avec windows 7.
Lorsque je charge le projet, une mise à niveau est lancé j'ai le message suivant :
impossible de charger le composant référencé: MSHFLXGD.OCX
Après une recherche sur google, j'ai trouvé et installé ce composant, mais j'ai toujours le même message.
Avez vous une idée pour réglé ce soucis.
Merci.
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
23 juil. 2009 à 14:14
Bon, on se pause,
Voici la version finale de ce programme.
Normalement plus de bug, plus de do events, des composants correctements nommés. Un code commenté.
Et un Zip OK

^^ Toute remarque sur cette ultime version est la bienvenue
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 juil. 2009 à 11:02
je viens d'uploadé ton zip qui n'était toujours pas correct

++
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
23 juil. 2009 à 09:01
OUI, je vais refaire le zip, sans sous Zip, deplus, je me suis rendu compte que j'ai zappé un fichier important dans la version avec API ^^ toutes mes excuses
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
23 juil. 2009 à 08:23
Le DoEvents ne sert que dans un seul cas : tu fais un calcul très long, et tu dois afficher périodiquement l'avancement dans un contrôle du formulaire en postant des messages : sans DoEvents, les messages ne sont pas traités à temps, avec DoEvents, le système prend le temps d'interrompre le calcul le temps de traiter les derniers messages en attente. Cela sert aussi à gérer un bouton Annuler pendant le long calcul (il suffit d'une simple variable globale pour cela).
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 juil. 2009 à 00:26
pourrais-tu refaire un zip correct stp!

la taille a augmenté, on ne peut plis "voir" (files.c-s) le code sans le télécharger si tu le sous-zippe....

merci
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 juil. 2009 à 19:01
Ca je sais ... mais je pensais qu'il avait une autre solution.
Et je ne suis pas sûr que ça soit comme des NOP en asm ...
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
22 juil. 2009 à 18:42
Et bien tu ne les remplacent pas ^^
Ils son comme les NOP en assembleur. Sauf que la, le but n'est pas de temporiser mais de laisser souffler l'OS pendant un court instant
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 juil. 2009 à 18:39
@Patrice99 : Comment tu remplaces les DoEvents ?
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
22 juil. 2009 à 17:48
J'ai implémenté la version sans api, qui travaille à partir des Exports.
Avantage --> plus de requestes acharnées sur la base de registre
Inconvénient --> Temps de traitement bien bien + long

je laisse les deux versions dans le zip téléchargeable.
je vais me repencher sur la version avec API afin de trouver ce qui cloche (traitement & gestion des valeurs de retour des API)

toute critique est la bienvenue.
PS : pour ma part je préconise l'emploie du DoEvents dans toute boucle. Cela Evite ne ne pas pouvoir reprendre la main sur VB6 ^_^
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
22 juil. 2009 à 14:57
^^ merci de tous ces consils très avisés, je tacherais d'en tenir compte.
j'avais mis des "on error goto err" mais cela n'empechait pas le plantage et la fermeture des processus.

Je suis en trein de refaire le code de A à Z en n'utilisant plus les API. (juste pour le Shell qui atends)
Je compare les Exports et pis c'est tout.

inconvénient, ben c'est plus long à traiter. Mais cela reste raisonnable. Enfin, je posterais quand ce serra terminé.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
22 juil. 2009 à 13:21
Private Function Lire_CLEE -> Sub et non fct
On Error Resume Next : à bannir !
DoEvents : à éviter voire même à bannir !
Les fct Reg* retourne un Long : cette valeur de retour sert à savoir si succès ou échec :
voir ici : http://msdn.microsoft.com/en-us/library/ms724895(VS.85).aspx
et ici www.sysdeco.no/Doc/Langref/default.htm?turl=regopenkey.htm
Il faut toujours vérifier chaque étape avant de passer à la suivante (c'est pour cela que On Error Resume Next est à bannir : ne sert que dans de rare cas)
Tu peux laisser un On Error Goto Erreur au début et afficher à la fin la cause de l'erreur : c'est bien possible que ce soit un dépassement de capacité du à la récursivité combinée avec une erreur.
Dans une fonction récursive, c'est le moment où jamais de s'appliquer à super bien programmer au carré !
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
22 juil. 2009 à 10:33
ReBonjour,

J'ai mis une bonne dose de :
DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents:
DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents:

avant et apres l'instruction RegOpenKey dans Lire_CLEE
et cela réduit la fréquence des bugs ...
Réduit mes ne résouds pas ;)

Il faut dire que les exports prennent tout mon CPU ;)
je continue a chercher.
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
22 juil. 2009 à 10:09
Bonjour PATRICE99,
qu'entends-tu par "fait planter completement VB6" ??
as-tu un message d'erreure. Si oui est-ce "Impossible d'ecrire à l'addresse blablabla" ?

Si c'est cette erreure, en effet elle met fin au processus en entier et donc au debuggueur MsVB6. Même avec un On error goto ou un On error resume next, le problème perssiste.

Sur mon PC ,qui n'a franchement pas de bonnes performances, le problème arrive de temps à autres, et c'est moins fréquent avec l'executable.
Par là j'entends qu'il faut reessayer jusqu'a ce que ça passe ^^
ou alors compiler le programme et l'executer.

J'essaye de trouver l'origine de ce problème mais je n'y parviens pas pour le momment.
Comme je le disais plus haut je pense que cela proviens d'une trop grande fréquence de requestes sur la base de registres.
je vais essayer de blinder de Doevents.
Si en revenche c'était une erreure de pile (mais il le dirait en ces termes normalement) je pourrais recoder la fonction lire_CLE en non autoapelante (qui s'appelle elle même)...

si vous avez des pistes elles sont les bienvenues.
Cordialement,
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
22 juil. 2009 à 09:18
Salut, chez moi la ligne Call Lire_CLEE(Root, "") fait planter completement VB6 : pas moyen de savoir ce qui ce passe : peut être un dépassement de capacité ?
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
21 juil. 2009 à 12:52
ouin, je n'arrive pas a changer l'image du topic ;(
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
21 juil. 2009 à 12:32
^^ a ok, oui, je suis entierrement d'accord avec le fait de nommer les objet en fonction de leurs fonctions ^^
pour ma part je me contente des prefixes genre
B_nom pour un bouton
L_nom pour une liste
C_nom pour une combobox
T_nom pour une textbox
TV_nom pour un treeview ...

mais ce projet etant fait vite fait, je n'ai pas pris la peine de nommer les composants ni de commenter plus que ca, ni d'écrire un code comme il faudrait avec des fonctions bien faites et bien classées ^^
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
20 juil. 2009 à 19:34
Pour l'Option Explicit, je trouve que c'est quand même plus logique de le mettre dans le code, comme ça tu peux développer sur n'importe quelle machine ayant VB6 sans changer la config ...

Pour les objets non nommés, je trouve que c'est plus facile de les nommer en fonction de leur utilité (par exemple le bouton annuler cmdAnnuler, etc.) et de leur ajouter un préfixe en fonction de leur type (txt=textbox, cmd=button, lst=listbox, cmb=combobox, frm=frame/form, pgr=progressbar, lvw=listview, etc.)

Evidemment tu fais ce que tu veux, je propose ça pour la facilité des débutants qui voudront comprendre le code ...
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
20 juil. 2009 à 19:17
En ce qui concerne les fautes d'orthographe, bien, abstention monsieur l'arbitre ^^

En ce qui concerne l'"Option Explicite", j'utilise l'option automatique qui vérifie la déclaration des variables dans VB6.

Mais qu'entends tu par "objets non nommés sur la form ?
il y a juste un combobox "CB"
2 boutons "Command1" et "Command2"
1 label "Label1"
et une liste "L"
Ceci dit, je conviens que l'interface et la présentation du code ne sont pas finalisés ^^

j'ai oublié de préciser dans les commentaires, que les "hh/mm/ss"
sont les heures de modification. N'oubliez pas que ces heures sont en mode GMT, donc en ce moment, il y a 2 heures de décalage.
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
20 juil. 2009 à 17:15
Petit détail : on dit une clé (pas de 'e' final) et la dernière ligne de ta description, faute de frappe : 'Toute critiques ou remarques sont les bienvenues ^^ '

Pour parler de ta source, sur le form, il reste des objets non nommés ...
Et dans le code, pour éviter les erreurs introuvables, ajoute 'Option Explicit' en tête de chaque fichier du projet. Commme ça, si tu ne déclares pas une variable, il te le signale et refuse de compiler. Ca peut arriver qu'on se trompe dans un nom de variable et on passe alors une demi-heure pour s'apercevoir qu'on a fait une faute de frappe !

Pour le reste, bon programme : 10/10
Rejoignez-nous