Introduction▲
Vous venez de créer une application et celle-ci charge des fichiers de données personnalisés (avec une extension particulière). Ce que vous aimeriez maintenant c'est pouvoir associer ces fichiers à votre application et à une icône particulière. Ainsi, de même que lorsque vous faites un double clic sur un fichier PDF celui-ci s'ouvre avec Acrobat, un double clic sur un fichier dont vous aurez personnalisé le type l'ouvrira avec votre application.
Nous allons voir que cela peut se faire facilement en modifiant un peu le code de l'application et en paramétrant correctement la solution de déploiement au travers de Visual Studio 2005.
I. Création de l'application▲
I-A. Présentation de l'application▲
Nous allons illustrer ce tutoriel en créant une petite application. Celle-ci sera composée d'un textbox et d'un bouton. L'appui sur ce dernier enregistrera le contenu de la textbox dans un fichier texte avec une extension « .toto ».
Voici à quoi ressemblera l'interface :
Si vous créez un fichier avec une extension « .toto », Windows lui associe une icône générique. Si vous faites un double clic dessus, Windows vous demande avec quel logiciel l'ouvrir. En effet, aucun logiciel ne lui a été associé. Notre but est qu'une icône soit associée à ce fichier et qu'un double clic dessus lance notre petite application et que celle-ci lise le fichier et affiche son contenu dans la textbox.
I-B. Le code▲
Voici tout d'abord le code associé à notre bouton :
private
void
buttonSave_Click
(
object
sender,
EventArgs e)
{
try
{
SaveFileDialog saveFileDialog1 =
new
SaveFileDialog
(
);
saveFileDialog1.
Filter =
"fichiers toto (*.toto)|*.toto|Tous les fichiers (*.*)|*.*"
;
saveFileDialog1.
FilterIndex =
1
;
saveFileDialog1.
RestoreDirectory =
true
;
if
(
saveFileDialog1.
ShowDialog
(
) ==
DialogResult.
OK)
{
// Écriture du fichier. On l'écrase s'il existe déjà
using
(
System.
IO.
StreamWriter sw =
new
System.
IO.
StreamWriter
(
saveFileDialog1.
FileName,
false
))
{
sw.
WriteLine
(
textBox1.
Text);
}
}
}
catch
(
Exception ex)
{
MessageBox.
Show
(
"Erreur lors de la sauvegarde: "
+
ex.
Message);
}
}
Vraiment rien d'exceptionnel ici. On demande où l'utilisateur veut enregistrer le fichier grâce à un saveFileDialog (auquel on ajoute un filtre sur les fichiers d'extension « .toto »). On crée ensuite à cet endroit un nouveau fichier contenant le texte de la textbox.
Intéressons-nous maintenant au chargement des fichiers « .toto ».
Lorsque l'utilisateur fera un double clic (ou un clic droit, ouvrir) sur un de ces fichiers, le chemin de celui-ci sera passé argument de notre application. Il nous faut donc le récupérer pour pouvoir charger le fichier.
Il est possible d'obtenir la liste des arguments grâce à la méthode GetCommandLineArgs() de la classe Environment. Cette méthode revoit un tableau de String contenant la liste des arguments de l'application.
Attention !
Ce tableau d'argument n'est jamais vide. En effet, la première case du tableau contient le chemin de l'exécutable de notre application.
Le chemin du fichier à charger sera donc dans la deuxième case (index 1).
Voici donc le code de chargement d'un fichier « .toto ». Ce code est placé dans la méthode Load de la form de l'application, mais rien ne vous empêche de le mettre ailleurs.
private
void
MonAppli_Load
(
object
sender,
EventArgs e)
{
try
{
//si le chemin du fichier est passé en argument
if
(
Environment.
GetCommandLineArgs
(
).
Length ==
2
)
{
MessageBox.
Show
(
"Chargement du fichier: "
+
Environment.
GetCommandLineArgs
(
)[
1
]
);
string
fileContents;
//lecture du contenu du fichier
using
(
System.
IO.
StreamReader sr =
new
System.
IO.
StreamReader
(
Environment.
GetCommandLineArgs
(
)[
1
]
))
{
fileContents =
sr.
ReadToEnd
(
);
}
//on met le contenu du fichier dans la textbox
textBox1.
Text =
fileContents;
}
}
catch
(
Exception ex)
{
MessageBox.
Show
(
"Erreur lors du chargement: "
+
ex.
Message);
}
}
On vérifie qu'un chemin de fichier est bien passé en paramètre.
Si c'est le cas, on le récupère avec Environment.GetCommandLineArgs()[1]. On lit ensuite ce fichier avec un StreamReader et on affiche son contenu dans la textbox.
II. Le projet de déploiement▲
II-A. Ajouter un nouveau projet▲
Maintenant que notre application est capable d'ouvrir un fichier dont le chemin lui est passé en argument, il reste à s'occuper de l'association proprement dite.
Il nous faut tout d'abord ajouter un nouveau projet de type déploiement à notre solution. Pour cela, faites un clic droit sur le nom de la solution dans l'explorateur de solution et choisissez nouveau projet.
Configurez ensuite le projet de déploiement selon vos besoins, sans oublier d'y inclure notre petite application.
Vous devriez avoir un explorateur de solution qui ressemble à ça :
II-B. Configurer le projet de déploiement▲
Une fois le nouveau projet ajouté, faites un clic droit sur son nom et choisissez « Voir », « Types de fichier ». Cela va ouvrir un designer (en onglet) pour les types de fichiers :
Dans ce nouveau designer, cliquez sur « Types de fichier sur la machine cible » et choisissez « Ajouter un type de fichier »:
Cela va ajouter un nouvel élément dans le designer. Sélectionnez-le et allez dans l'éditeur de propriétés pour les modifier.
Complétez maintenant les différents champs de ce nouveau type de fichier selon vos besoins. Remplissez le nom, la description, l'extension et assignez une icône à ce nouveau type de fichier. Dans le champ « commande », pointez vers l'application avec laquelle ouvrir ce type de fichiers.
Retournons maintenant au designer. Sous le nouveau type de fichier créé, cliquez sur le nœud « ouvrir » :
Aller ensuite dans la fenêtre de propriétés pour les éditer :
Ne touchez pas aux deux derniers champs, leur valeur par défaut nous suffit. Le champ « Arguments » spécifie que le chemin du fichier sera passé en argument de l'application. Le champ « verbe » spécifie l'action à effectuer avec le fichier. Le champ « Nom » indique le libellé affiché dans le menu contextuel lors d'un clic droit sur un fichier de ce type (voir image suivante). Modifiez-le à votre guise.
La configuration du projet de déploiement est maintenant terminée. Vous pouvez compiler le projet et le déployer pour tester votre nouveau type de fichier personnalisé.
Conclusion▲
Nous avons donc vu comment créer son propre type de fichier et l'associer à son application pour les ouvrir automatiquement.
Cela ne nécessite que peu de lignes de code et le paramétrage du projet de déploiement dans Visual Studio 2005 est vraiment très simple à réaliser.
Sources▲
Téléchargez les sources de la solution donnée en exemple.
Remerciements▲
J'adresse ici tous mes remerciements à l'équipe de rédaction de « developpez.com » pour le temps qu'ils ont bien voulu passer à la correction et à l'amélioration de cet article.
Contact▲
Si vous constatez une erreur dans le tutoriel, dans les sources, dans la programmation ou pour toutes informations, n'hésitez pas à me contacter par le forum.