Comment associer une extension de fichier à mon programme ?
C'est dans la base de registre que sont gérées les associations de
fichiers, sous la clé HKEY_CLASSES_ROOT, où il vous faudra créer toute
une série de clés et de valeurs. Pour savoir comment accéder à la base de
registre, lisez la question 59.
Si votre programme est destiné à utiliser un nouveau format de fichier,
vous devrez d'abord choisir une nouvelle extension pour représenter vos
fichiers. On distingue deux types d'extensions : les extensions courtes,
composées de 3 caractères maximum et les extensions longues, composées de
plus de 3 caractères. Ces dernières sont préférables car elles limitent le
risque de "collision d'extensions", en d'autres mots, le risque que
deux fichiers de formats différents aient la même extension. Néanmoins les
extensions courtes restent encore les plus usitées. En fait, le mieux est de
définir à la fois une extension courte et une extension longue.
Lors du choix d'une nouvelle extension, vous devrez aussi vous assurer que
celle-ci n'est pas déjà employée. Pour ce faire, consulter la base
de données des Multipurpose Internet Mail Extensions (MIME) de l'Internet
Assigned Numbers Authority (IANA), ou bien d'autres bases de données de
types de fichiers, telles que http://filext.com/
ou http://extsearch.com/.
Une fois votre extension choisie, vous pouvez, si vous le désirez,
l'enregistrer auprès de l'IANA.
La deuxième étape consiste à choisir un PROGID, qui permettra
d'associer votre extension à votre programme, et de contrôler le comportement
de cette association. Le format recommandé pour les noms de PROGID est :
[Distributeur ou Application].[Composant].[Version]. Exemples : Word.Document.8
ou VisualBasic.Form.
Une fois votre PROGID choisi, ajoutez la clé HKEY_CLASSES_ROOT/VOTREPROGID.
Comme valeur par défaut pour cette nouvelle clé, entrez un nom convivial
décrivant le format de votre fichier. Par exemple : Document Microsoft Word ou
Son au format mp3. C'est cette petite description qui sera affichée dans
l'explorateur.
Sous cette nouvelle clé, ajoutez ensuite la clé HKEY_CLASSES_ROOT/VOTREPROGID/DefaultIcon
avec comme valeur par défaut l'emplacement de l'icône associée à votre type
de fichier. Celle-ci peut soit être un fichier .ico, soit être stockée dans
un fichier .exe ou dans une dll. Auquel cas vous devez en plus préciser un
index. Exemple : C:\PROGRA~1\INTERN~1\iexplore.exe,9.
Parallèlement à la clé DefaultIcon, ajoutez la clé HKEY_CLASSES_ROOT/VOTREPROGID/shell.
Ajoutez ensuite la sous-clé HKEY_CLASSES_ROOT/VOTREPROGID/shell/Open en
spécifiant comme valeur par défaut le nom convivial de la commande, comme par
exemple "&Ouvrir". Ajoutez enfin la sous-clé HKEY_CLASSES_ROOT/VOTREPROGID/shell/Open/command,
en spécifiant comme valeur par défaut le chemin de votre programme (entre
guillemets). Ajoutez derrière ce chemin "%1", qui indiquera à
Windows d'envoyer, lors de l'ouverture d'un fichier, le chemin du fichier à
ouvrir par le biais de la ligne de commande. Ainsi votre programme pourra
récupérer ce chemin en utilisant la fonction "Command" (cfr. Question
17). Exemple d'un tel chemin : "C:\WINDOWS\mplayer.exe"
"%1".
Il ne vous reste maintenant plus qu'à associer l'extension au PROGID.
Pour ce faire, créez la clé HKEY_CLASSES_ROOT/.ext, ext étant
l'extension représentant vos fichiers. Comme valeur par défaut pour cette
nouvelle clé, entrez le nom du PROGID.
En résumé voici les différentes clés et valeurs à créer :
HKEY_CLASSES_ROOT
VOTREPROGID
(Default) = Description du fichier
DefaultIcon
(Default) = %ProgramFiles%\VotreProgramme\VotreProgramme.exe,0
shell
open
(Default)
= "&Ouvrir"
command
(Default) = "%ProgramFiles%\VotreProgramme\VotreProgramme.exe"
"%1"
HKEY_CLASSES_ROOT
.ext
(Default) = VOTREPROGID
.ext-long
(Default) = VOTREPROGID
Notez qu'il existe toute une série d'autres paramètres permettant de
contrôler le comportement de vos fichiers dans l'interface de Windows. Vous
trouverez plus d'infos dans la MSDN : Creating
a File Association (Shell
Programmer's Guide). |