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

En utilisant un projet de déploiement Visual studio 2005

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 Donner une note à l'article (5)

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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 faîtes 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
monAppli


Si vous créez un fichier avec une extension ".toto", Windows lui associe une icône générique. Si vous faite 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 :

 
Sélectionnez

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)
        {
            // Ecriture 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.

 
Sélectionnez

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.

nouveauProjet
ProjetDeploiement



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
Solution

II-B. Configurer le projet de déploiement



Une fois le nouveau projet ajouté, faîtes un clic droit sur son nom et choisissez "Voir", "Types de fichier". Cela va ouvrir un designer (en onglet) pour les types de fichier :

FileTypes
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":

AddFileTypes
Ajouter un nouveau type de fichier



Cela va ajouter un nouvel élément dans le designer. Sélectionnez-le et aller dans l'éditeur de propriétés pour les modifier.

FileTypeProperties
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 noeud "ouvrir" :

ouvrir


Aller ensuite dans la fenêtre de propriétés pour les éditer :

ouvrirPropertie


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 suivant). Modifiez-le à votre guise.

ouvrirAvec
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 tutorial, dans les sources, dans la programmation ou pour toutes informations, n'hésitez pas à me contacter par le forum.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

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.