VB.NET : Créer sa propre extension
(Ceci est un ancien tutoriel publié sur un forum par mes soins, que j’ai repris ici sous forme d’article, si jamais il peut servir)
En programmant on est parfois amené à devoir enregistrer des données sur l’ordinateur cible, et encore mieux, on aimerait pouvoir ouvrir directement ses fichiers avec notre programme. J’ai donc découvert un moyen de créer sa propre extension que je vais vous expliquer.
Pour lire le contenu d’un fichier portant cette extension, on a le choix entre permettre l’ouverture/lecture à partir de plusieurs programmes comme le Bloc-Notes, ou encore pouvoir le lire uniquement avec notre propre programme. Le but étant de créer notre propre extension, on choisira la deuxième option.
La création, qui n’a rien de compliqué je vous rassure, va être décrite en plusieurs étapes.
Le but ici sera de demander un nom et un prénom à l’utilisateur, qu’on enregistrera dans un fichier » .test1 « . Cette extension étant notre extension personnalisée. Le programme saura donc ouvrir cette extension et afficher Bienvenue à l’utilisateur ayant enregistré son nom et prénom. Bien sûr on aurait pu faire cela autrement ou plus facilement, mais le but et simplement de montrer le fonctionnement.
Étape 1 :
La première chose à faire (en partant du fait qu’on sache déjà ce qu’on va enregistrer) est de choisir comment on va écrire et lire les données.
On pourrait simplement écrire ligne par ligne les instructions, ou encore se définir un standard.
Ici on va plutôt utiliser le standard XML, de plus qu’on a déjà pleins de fonctions prévues à cet effet dans le Framework qui nous simplifieront la vie. Je ne fais pas de cours de XML, rien n’est compliqué ici 😉
Je pars ici à partir d’un formulaire comme sur l’image, à savoir :
– 4 Labels
– 3 TextBox
– 1 Bouton
Importez également les espaces de noms suivants :
Imports System.Xml Imports System.IO
Attention il faudra lancer le programme en tant qu’administrateur sous peine d’erreur et de non fonctionnement, car on va écrire dans le registre.
On va ensuite écrire une sous-procédure pour enregistrer le nom et prénom en XML :
Rien de très difficile, on concatène la chaîne au fur et à mesure avec un nouveau champ et sa mise en forme via vbNewLine et vbTab. On enregistre ensuite sur le bureau grâce au StreamWriter. Pour l’instant rien n’est crypté et donc en ouvrant monExt.test1 avec le bloc-notes on verra le contenu.
Double-cliquez sur le bouton sauvegarder et entrez simplement : enregistrerPref()
txtPrenom et txtNom étant les TextBox respectives contenant le Prénom et le Nom.
Étape 2 :
À présent on va associer l’extension » test1 » (les guillemets ne fonctionneront donc jamais…) avec notre programme.
Pour cela on écrit cette procédure :
On a donc besoin de créer deux clé de registre, notez le » %1 » qui est simplement un argument de notre programme et qui nous permettra d’obtenir le chemin du fichier lancé afin de l’utiliser avec notre programme. On aura quelque chose du genre : MonProgrammeInitial.exe monExt.test1
Étape 3 :
Maintenant, notre programme sait ouvrir un fichier lorsqu’il est passé en argument, mais bien entendu, on aura pas à noter MonProgrammeInitial.exe monExt.test1 tout le temps pour chaque fichier (même si ça fonctionne aussi). En effet on va simplement double cliquer sur notre .test1 comme tout autre programme.
Mais pour cela il nous faut écrire quelque chose qui va intercepter le fichier passé en argument (double-cliqué) et lire son contenu. On va donc créer une sous-procédure pour lire et interpréter le code XML qu’on a écrit auparavant et une autre pour souhaiter la bienvenue à l’utilisateur :
Enfin, on écrit donc dans la procédure Form1_Load (double-cliquez sur le formulaire pour l’afficher) :
La TextBox1 contiendra le chemin du fichier lancé.
Notez qu’on lit le code XML à la fin de la procédure. Ce qui va donc souhaiter la bienvenue à l’utilisateur.
À partir de maintenant on a tout, il reste éventuellement à crypter tout ça et à ajouter une icône personnalisée.
Cryptage du XML :
Pour cela on va importer deux nouveaux espaces de noms :
Imports System.Text Imports System.Security.Cryptography
Suivis de nos fonctions de cryptage/décryptage :
On change ensuite les codes précédents : (les lignes changées sont marquées)
Et voilà, les fichiers .test1 appartiennent à notre programme, s’ouvrent avec lui et ne peuvent pas être lus par un autre programme.
Ajout d’une icône :
Le zéro après la virgule signifie l’icône par défaut de votre programme (il faut déjà qu’il en contienne) et est le chemin absolu du programme sur l’ordinateur cible.
Plus d’informations pour apprendre la programmation ici :
1 Commentaires
Cliquez ici pour ajouter un commentaire
C’est désastreux ! J’ai 2 exceptions non gérée dans System.XML.XmlException (System.XML.dll ) et 2 dans System.formatException (mscorlib.dll)!
Pourriez vous m’aider s’il vous plaît ?
Merci.