Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment lier un type de fichiers à un programme

En C# of course ^_^

Sujet résolu
    4 juin 2011 à 20:29:38

    Salut les 0 ! :p
    J'aimerai savoir comment faire pour lier un type de fichier (.txt ou autre ) à un programme et tout cela en C#.

    Si quelqu'un sait comment faire je lui en serai vraiment reconnaissant ! :)

    Merci d'avance pour les 0 qui vont répondre à ce post ! ;)
    • Partager sur Facebook
    • Partager sur Twitter
    "Il est impossible pour un homme d'apprendre ce qu'il croit déjà connaître"
      5 juin 2011 à 0:08:53

      Petite manipulation


      Lance "regedit.exe" (soit par commande en tappant simplement "regedit", soit directement à l'adresse : C:\Windows\regedit.exe). Tu vas ainsi avoir accès à la base de registre Windows.

      Toute modification du registre Windows est à faire avec la plus grande précaution. Il ne faut pas y toucher si on ne sait pas ce que l'on fait. Cela pourrait avoir de lourdes conséquences quant au bon fonctionnement du système.


      Une fois regedit ouvert, à gauche tu vois une arborescence avec "Ordinateur" à la racine et quelques éléments commençant par "HKEY_".

      Dans "HKEY_CLASSES_ROOT", tu vois au tout début les extensions des fichiers, par exemple un dossier nommé ".sln". Il contient un dossier nommé "OpenWithProgids". Une fois ce dernier dossier sélectionné, à droite tu vois différentes clés, notamment "VisualStudio.Launcher.sln".

      Reviens dans "HKEY_CLASSES_ROOT" et cherches-y le dossier portant le nom "VisualStudio.Launcher.sln" (il se trouve ainsi à la même "profondeur" que le dossier ".sln"). Tu y vois un dossier "Shell" (nom relatif à l'invite de commandes), qui contient un dossier "Open", qui lui-même contient un dossier "Command". Ce dernier dossier contient une seule clé, dont la valeur est : "C:\Program Files\Common Files\Microsoft Shared\MSEnv\VSLauncher.exe" "%1".

      Explications


      Quand tu double-cliques sur un fichier toto.sln, Windows va regarder dans le registre, au niveau du dossier ".sln", dans la ruche "HKEY_CLASSES_ROOT" (le "h" vient de "hive" = "ruche" en anglais). Là, il apprend que les informations sont dans "VisualStudio.Launcher.sln". Il regarde la commande à exécuter et il voit la commande précédente. Le "%1" est l'argument envoyé au programme, ici il est remplacé par l'adresse du fichier à ouvrir. Ainsi, si tu cliques sur "D:\mySolution.sln", Windows démarre le programme "VSLauncher.exe" en lui envoyant en argument un tableau de string, dont la première valeur est ici "D:\mySolution.sln".

      Premier test


      Dans le registre, au même endroit que ".sln", crée une clé (clic-droit -> Nouveau -> Clé) que tu peux appeler ".myExtension" (juste pour tester). Crée une autre clé : "MyTestProgram.Launcher". Indique à la première clé la référence vers cette deuxième. Complète la deuxième avec l'adresse de ton programme et le tour est joué.

      Dans ton programme, écris par exemple :
      if (args.Length > 0)
      {
      	Console.WriteLine("Fichier à ouvrir : {0}", args[0]);
      }
      Console.WriteLine("Appuyez sur une touche pour continuer...");
      Console.Read();
      


      Crée un fichier "toto.myExtension" et double-clique dessus : tu vois la console qui t'affiche l'adresse du fichier. :magicien:

      Bilan


      On a créé les clés à la main, le but est maintenant de faire ça en C#. Comme Google est notre ami, il vient : http://mel-green.com/2009/04/c-set-file-type-association/.

      Fais-en bon usage. ;)


      ps : cf. la partie IV de mon tutoriel (quand elle sera en ligne :-° ).
      • Partager sur Facebook
      • Partager sur Twitter
        5 juin 2011 à 11:36:28

        OK !
        Merci beaucoup Narvarth ! :)

        PS : ton tuto est super, il manque juste quelques astuces comme celle là ou encore le réseau mais c'est pas bien grave ! ;)
        • Partager sur Facebook
        • Partager sur Twitter
        "Il est impossible pour un homme d'apprendre ce qu'il croit déjà connaître"

        Comment lier un type de fichiers à un programme

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown