HEXAMINATOR - ÉDITEUR/INTERPRÉTEUR HEXADÉCIMAL RAPIDE ET EFFICACE

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 10 mars 2011 à 01:13
NikatorS Messages postés 147 Date d'inscription mercredi 18 septembre 2002 Statut Membre Dernière intervention 15 avril 2011 - 21 avril 2011 à 16:57
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/52911-hexaminator-editeur-interpreteur-hexadecimal-rapide-et-efficace

NikatorS Messages postés 147 Date d'inscription mercredi 18 septembre 2002 Statut Membre Dernière intervention 15 avril 2011
21 avril 2011 à 16:57
Merci !
J'espère pouvir faire aussi bien que Hedit ou même mieux et en gratuit...
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
20 avril 2011 à 08:34
Je confirme, cette appli devient incontournable... Bravo à toi Nikators, c'est du bon boulot.
Pour ma part, je vais l'utiliser comme auparavant Hedit, appli que je traine de micro en micro depuis des années.
Si je pouvais revoir ma note je mettrai 20 (Mer... c'est pas possible)
NikatorS Messages postés 147 Date d'inscription mercredi 18 septembre 2002 Statut Membre Dernière intervention 15 avril 2011
19 avril 2011 à 20:52
Voici les mises à jour effectuées :
1) Nouvelle catégorie de Recherche (regroupant les entiers naturels, relationnels et réels).
2) Nouvelle catégorie pour atteindre une position (vers l'arrière).
3) Nouveaux menus : "Enregistrer sous", "Position".
4) Ajout d'une barre de progression lors de la sauvegarde.
5) Gestion de l'affichage suite à un évènement clavier/souris amélioré.
6) Changement de l'apparence du curseur.
7) Sélection de plusieurs octets simultanément.
8) Surlignage des octets.
9) Ajout d'un menu contextuel dans la zone d'édition et dans la zone d'interprétation.
10) Réduction de l'espace mémoire occupé en RAM.
11) Elévation ponctuelle du programme avec les droits administrateur.
12) Info-bulle facilitant la lecture des grands nombres.
13) Réécriture des variables, fonctions et constantes pour facilité la lecture du code.
14) Divers bogues.
NikatorS Messages postés 147 Date d'inscription mercredi 18 septembre 2002 Statut Membre Dernière intervention 15 avril 2011
13 avril 2011 à 15:06
@ JLN :
Bonne remarque. Je l’ai appliqué

@ Patrice99 :
@C'est une très bonne méthode ! Elle est surtout pratique pour une élévation ponctuelle mais c'est précisément mon cas. Je vais la mettre en œuvre pour la prochaine version.
Merci de l'info Patrice.

@ tout le monde :
La prochaine version sortira la semaine prochaine, je pense.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
13 avril 2011 à 13:02
Une astuce élégante pour gérer le mode administrateur : lancer une autre instance de l'appli. en mode admin sans quitter celle en cours, avec un passage d'argument pour traiter le cas :
http://www.codeproject.com/KB/cs/ElevatePrivilege.aspx
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
29 mars 2011 à 08:31
Je serai tenter de dire qu'une position est unique donc fixe et se déplacer relativement dans le code, c'est obligatoirement avec offset, qu'il soit positif ou négatif.
Ex : Si je veux aller à l'adresse 03BF, cette adresse est unique.
Si je veux me deplacer de 53 octets je dois pouvoir le faire dans un sens ou dans l'autre.
Quoi qu'il en soit, continu, cette appli à de l'avenir et risque même d'être incontournable.
cs_samarium Messages postés 1 Date d'inscription mercredi 8 novembre 2006 Statut Membre Dernière intervention 28 mars 2011
28 mars 2011 à 20:23
Salut,

J'ai testé et il est vrai que l'éditeur est performant. J'ai essayé d'ouvrir un fichier de 1 Go, et c'était instantané. J'aime bien le côté simple pour avoir juste des informations sur le fichier. Mais puisque je ne suis pas un programmeur VB, je ne pourrais pas juger sur le code :p
NikatorS Messages postés 147 Date d'inscription mercredi 18 septembre 2002 Statut Membre Dernière intervention 15 avril 2011
28 mars 2011 à 19:05
Pourquoi pas. Je m'étais dit que je ferais le menu contextuel quand j'ajouterais le "Copier/Coller". Mais après tout, c'est dans l’orientation de ce programme.

Sinon j'ai une question ouverte à tout le monde (même si j'aimerai bien que JLN, Patrice99 et CGSI3 y réponde). L'outil "Aller à la position", parcourt le fichier en partant du début du fichier ou du curseur, mais toujours vers l'avant. Voyez-vous une raison ou une utilité de faire la même chose mais en direction de l'arrière ?

Et merci pour l'intérêt que vous portez à mon programme.
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
28 mars 2011 à 17:05
Si si, j'ai bien vu cette option, mais ce n'est pas de celle-ci dont je parlais, je me suis surement mal exprimé...
J'aimerai un menu contextuel dans l'application, c'est souvent plus sympa à utiliser plutôt que de rechercher dans la barre de menus, les options les plus courantes.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
28 mars 2011 à 15:59
Super pour le menu contextuel, tu peux d'ailleurs ajouter un Tooltip (car apparemment, yen a qui n'ont pas vu l'option !) : 'Ajouter/Supprimer un menu contextuel "HexaMinator" pour examiner directement un fichier depuis l'explorateur de fichiers (à partir de Windows Vista et supérieur, il faut préalablement lancer l'application en tant qu'admin.)'
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
28 mars 2011 à 08:20
Bonjour à tous,
Je viens de tester cette nouvelle version, et je dois dire que c'est vraiment super, j'étais très impressionné la dernière fois et là on a à faire à une application très aboutie, bravo !!!
Reste encore un petite effort en ajoutant un menu contextuel et ce sera parfait
Pour info, je teste en vb.Net 2010.
NikatorS Messages postés 147 Date d'inscription mercredi 18 septembre 2002 Statut Membre Dernière intervention 15 avril 2011
28 mars 2011 à 01:50
Voici les mises à jour effectuées :
1) Ajout de la fonction recherche d'octets, de textes et de valeurs.
2) Interprétation des octets en valeur 64 bits.
3) Affichage des valeurs numériques signées ou non et des réels.
4) Affichage de ces dernières de manière personnalisable.
5) Menu "Fichier", "Edition", "Options" et "A propos".
6) Accès au registre sans message d'erreur.
7) Rabaissement du niveau de privilège du programme (UAC) à "asInvoker". L'utilisateur (de Vista et plus) et prévenu qu'il doit lancer le programme en administrateur pour modifier le menu contextuel.
NikatorS Messages postés 147 Date d'inscription mercredi 18 septembre 2002 Statut Membre Dernière intervention 15 avril 2011
15 mars 2011 à 12:57
Merci à tous pour vos commentaires, vos remerciements et vos idées.

Tout d’abord, concernant le menu contextuel, j’ai bien pris en compte vos remarques JLN et NHenry. La mise à jour pour ce point sera effectuée avec l’ajout de l’outil de recherche.

Pour l’accès au registre, le problème de ACHENRI, le programme doit avoir les privilèges de l’administrateur. Pour cela il faut aller dans le fichier manifeste (app.manifest). Il faut remplacer la ligne « <requestedExecutionLevel level="asInvoker" uiAccess="false" /> » par la ligne « <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> ».
Je tiens à préciser que la méthode utilisée actuellement est mauvaise.
Premièrement, l’utilisateur doit pouvoir choisir d’ajouter ou non l’entrée dans le menu contextuel. Plutôt que d’ajouter cette clef dans le registre à chaque chargement du programme, il faudrait créer une fenêtre pour les options et l’ajouter dedans. Par ailleurs, il faudrait proposer cette option lors de l’installation.
Secundo, augmenter les privilèges de l’application réduit le nombre potentiel d’utilisateur, bien que dans notre cas il y a de forte chance que l’utilisateur ait les droits administrateur.
Je vais donc laisser ce problème de coté pour l’instant et je m’en occuperai bien plus tard. Je garderai à l’esprit l’idée de Patrice99.

En ce qui concerne la recherche, les idées proposées par JLN sont, en effet, déjà prévues. La fonction pourra chercher du texte, quel que soit l’encodage et la case, des valeurs numériques, quel que soit le type et l’organisation, ou des octets (hexadécimaux).

Enfin, merci de m’avoir répondu CGSI3 et proposé ton aide.

Bonne continuation à tous.
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
14 mars 2011 à 21:33
Bonjour a tous,
... vous voulez faire exploser ma boite mail ... j'ai cru a une attaque virale ... lol
Pour en revenir a ta question NIKATORS, la sauvegarde des couleurs n'est pas nécessaire, l'intéret est avant tout le reperage des différents types de valeur et leurs redondances.
Pour exemple un fichier 3DS est composé de blocs de données de manière "récursive", c'est a dire qu'un bloc peut être constitué de sous bloc et ainsi de suite ...
Dans cette configuration reperer un bloc d'un sous bloc est difficile.
C'est pour cela que je te donne cette idée.
Sinon j'ai terminé ce type de fichier mais je dois m'attaquer prochainement a d'autres formats.
Mais si tu as des questions sur un type précis, même particulier , n'hesite pas a m'en faire part. J'ai peut être des infos.
Bonne soirée a tous. CGSI3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
14 mars 2011 à 14:04
Pour info :
".exe -o" & Chr(34) & "%L" & Chr(34))
peut aussi s'écrire (sans cet affreux VB6-retro de Chr) :
".exe -o""%L""")

ou alors en utilisant Convert.ToChar, il me semble.
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
14 mars 2011 à 14:01
Pour moi ces lignes fonctionnent (je suis admin) :
My.Computer.Registry.SetValue("HKEY_CLASSES_ROOT\*\Shell\HexaMinator\command", "", My.Application.Info.DirectoryPath & "" & My.Application.Info.ProductName.ToString & ".exe -o " & Chr(34) & "%L" & Chr(34))
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\*\Shell\HexaMinator\command", "", My.Application.Info.DirectoryPath & "" & My.Application.Info.ProductName.ToString & ".exe -o " & Chr(34) & "%L" & Chr(34))

Mais il faut modifier le Form1_Load car il y a un petit bug si on considère l'espace après "-o".
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
14 mars 2011 à 12:33
J'ai modifié la ligne suivante :
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\*\Shell\HexaMinator\command", "", My.Application.Info.DirectoryPath & "" & "Hexaminator.exe -o" & Chr(34) & "%L" & Chr(34))

par :

My.Computer.Registry.SetValue("HKEY_CURRENT_USER\*\Shell\HexaMinator\command", "", My.Application.Info.DirectoryPath & "" & My.Application.Info.ProductName.ToString & ".exe -o" & Chr(34) & "%L" & Chr(34))

Plus de probleme de nom.
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
14 mars 2011 à 12:11
Effectivement vos deux derniers posts ont chacun généré un mail mais les quatre commentaires précédant mon dernier commentaire ont produit en tout huit mails. Etrange ... Mais ne gâchons pas l'espace des commentaires et revenons à l'Hexaminator.

Cordialement, Bacterius !
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
14 mars 2011 à 12:05
Bacterius:
Non, pour moi c'est normal, 1 post 1 mail.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
14 mars 2011 à 12:04
Oui, certains commentaires produisent 2 notifications par mail au lieu d'une, bizarre !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
14 mars 2011 à 11:36
Pourquoi je reçois autant de mails sur cette source ? On dirait que je recois deux mails par commentaire déposé, personne a le même problème ?

Cordialement, Bacterius !
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
14 mars 2011 à 11:30
Désolé pour la remarque concernant l'explorer, j'ai posté trop vite sans avoir testé, maintenant c'est chose faite.

Il faut être admin pour HKCR mais cela ne suffit pas, il faut encore que l'exécutable existe hors ton projet s'appelle Hexaminator, mais tu veux placer dans HKCR "UltraHexa.exe" introuvable !

Concernant ma remarque sur la recherche, elle reste valide.

Au niveau de la ligne de commande, ne faut-il pas prévoir la gestion des guillemets pour les fichiers dont le chemin comporte des espaces ?

Bon travail, ce programme est vraiment très utile, merci.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
14 mars 2011 à 11:04
Il faut faire un bouton en précisant que ce bouton ne peut être lancé qu'en mode Admin depuis Vista et Seven, c'est comme cela que j'ai fait dans mes appli, il faut donc un try catch pour le cas où on n'est pas admin.
ACHENRI Messages postés 12 Date d'inscription dimanche 21 novembre 2004 Statut Membre Dernière intervention 2 décembre 2008
14 mars 2011 à 10:32
Bonjour NikatorS,

Encouragé par les commentaires précédents, je viens de télécharger (remarque à l'occasion que les verbes du 1er grp se terminent par ER à l'infinitif, mais ce n'est pas le sujet) ta source.
J'ai chargé le projet sous VS 2010 (la conversion s'est faite sans détecter d'erreur) mais à l'exécution j'ai une erreur dans l'instruction :

regKey = My.Computer.Registry.ClassesRoot.CreateSubKey("*\Shell\HexaMinator\command")

de la fonction AddAtContextMenu().

Le message d'erreur : L'accès à la clé de Registre 'HKEY_CLASSES_ROOT\*\Shell\HexaMinator\command' est refusé.

C'est normal sous W7 comme sous Vista.
Il faudrait peut-être mettre cette clé ailleurs dans la Registry ? Si tu pouvais proposer une solution...

Merci
cs_ricco Messages postés 12 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 13 juin 2010
14 mars 2011 à 10:30
Excellent je suis intéressé par l'affichage pour un autre projet. Mais ton éditeur est un bon début. Dans les évolutions l'enregistrement de la dernière configuration et la possibilité d'agrandir la fenêtre
Encore bravo
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
14 mars 2011 à 07:49
Bonjour et merci pour cette source.
Puisque des suggestions tu demandes... J'aimerai avoir accès à l'édition hexa depuis l'explorer (bouton droit ==> Hexaminator) aussi simplement que cela. Un peu comme Hedit que j'utilise depuis des lustres. Autre suggestion puisque tu travailles la recherche, elle pourrait s'effectuer soit en hexa soit en caractères (sans distinction maj/min) et F3 pour suivant (ca je pense que tu avais prévu).
NikatorS Messages postés 147 Date d'inscription mercredi 18 septembre 2002 Statut Membre Dernière intervention 15 avril 2011
13 mars 2011 à 22:11
Merci de ton soutient CGSI3.

Ton idée me plaît. J'ai déjà une petite idée pour lui donnée forme.

Cela dit je vais pas la sortir tout de suite. Avant ça je veux finir la fonction de recherche. Et pour que le coloriage soit agréable, il va falloir gérer la sélection multiple. Comme je manque de temps en ce moment, je compte sur la patience de chacun...

Mais j'ai une question pour toi. Aurais-tu besoin d'enregistrer le coloriage ?
Cordialement.
CGSI3 Messages postés 416 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 7 janvier 2018 1
11 mars 2011 à 21:57
Un grand merci pour le partage de ton code Nikators, 10/10 car parfait pour moi ..
Juste une petite idée:
J'ai cherché a faire le même type d'appli pour analyser la structure d'un fichier 3DS il y a quelques mois. (la tienne dépasse largement mes besoins)
Dans ce genre de fichier s'entremêle nombres clés (connu pour différentier des blocks de données) , des nombres codés sur différents bytes, et des caractères (string).
Dans ce type de démarche il serait intéressant que l'on puisse colorier soi même , de différentes manières les groupes de bytes pouvant avoir la même utilité pour mieux les reperer.
Sinon encore merci CGSI3
NikatorS Messages postés 147 Date d'inscription mercredi 18 septembre 2002 Statut Membre Dernière intervention 15 avril 2011
10 mars 2011 à 16:08
Je viens de corriger le bogue. Merci de l'info.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
10 mars 2011 à 14:04
Ya un petit bug ici :
ScrollB.Value = Math.Floor(OffScroll / CarParLigne)
lorsque l'on réduit une position de 32 à 8 dans la combo, mais sinon cela à l'air vraiment bien et utile.
NikatorS Messages postés 147 Date d'inscription mercredi 18 septembre 2002 Statut Membre Dernière intervention 15 avril 2011
10 mars 2011 à 12:50
Merci.
Je vais emmené ce projet le plus loin possible. Si quelqu'un trouve que d'autres fonctions pourraient être utile, n'hésitez pas à m'en faire part. Je réfléchis encore au Copier-Coller et peut-être aussi à l'insertion de nouveaux octets.
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
10 mars 2011 à 01:13
Pas lu le code, mais je mets 10 pour le nom de projet très original. Perso j'ai remarqué que quand je trouve un nom de projet qui me plaît j'ai tendance à me donner à fond et de fignoler le code, c'est important je trouve.

Cordialement, Bacterius !
Rejoignez-nous