Créer et associer un type de fichier à son application

En utilisant un projet de déploiement Visual studio 2005

Florian Casabianca

Le but de cet article est de pouvoir créer son propre type de fichier (avec une extension et une icône personnalisées) et de l'associer à son application en utilisant un projet de déploiement Visual Studio 2005.

N'hésitez pas à commenter cet article ! Commentez ♪

- Titre : Créer et associer un type de fichier à son application

- Auteur : Florian Casabianca

- Parution : 1 février 2007

- Mise à jour : 1 février 2007

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2007 Florian Casabianca. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.

Sommaire

- Introduction

- I. Création de l'application

- I-A. Présentation de l'application

- I-B. Le code

- II. Le projet de déploiement

- II-A. Ajouter un nouveau projet

- II-B. Configurer le projet de déploiement

- Conclusion

- Sources

- Remerciements

- Contact

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 :

monAppli

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 :

Solution

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 :

Voir le designer de types de fichier

Dans ce nouveau designer, cliquez sur « Types de fichier sur la machine cible » et choisissez « Ajouter un type de fichier »:

Ajouter un nouveau 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.

Propriétés du type de fichier

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.

menu ouvrir avec

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.