Associer un type de fichier à votre programme

0/5 (27 avis)

Snippet vu 13 859 fois - Téléchargée 46 fois

Contenu du snippet

Comme apparement le sujet à été traité qu'inversement, c'est à dire trouver le programme associé à un fichier, je vous propose aujourd'hui une méthode pour associer un fichier à votre programme.

Enum HKEYs
' Enumération des HKEYs de la base de registre
HKEY_CLASSES_ROOT = 0
HKEY_LOCAL_MACHINE = 1
HKEY_CURRENT_USER = 2
End Enum

Public Sub Ecrit(HKEY As HKEYs, Endroit As String, Valeur As String)
' Pour créer ou écrire une clé
' EX: Ecrit HKEY_CURRENT_USER, "MonProg\MaClé", "Valeur"
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.RegWrite HK(HKEY) & Endroit, Valeur
End Sub

Public Function HK(HKEY As HKEYs) As String
' Convertion des HKEYs de la base de registre
Select Case HKEY
Case 0: HK = "HKCR\"
Case 1: HK = "HKLM\"
Case 2: HK = "HKCU\"
End Select
End Function

Public Sub Associer(Extension As String, Description As String)
If Right(App.Path, 1) = "\" Then r$ = "" Else r$ = "\"
' Pour associer un fichier à un programme
' EX: Associer "jpg", "Image JPEG"
' [!] Ne pas mettre de point devant l'extension

' Crée une nouvelle extension et un nouveau type de document
' Crée une opération "Ouvrir"
Ecrit HKEY_CLASSES_ROOT, "ZiViewer." & Extension & "\", Description
Ecrit HKEY_CLASSES_ROOT, "ZiViewer." & Extension & "\DefaultIcon\", App.Path & r$ & "icone " & Extension & ".ico"
Ecrit HKEY_CLASSES_ROOT, "ZiViewer." & Extension & "\Shell\", "Open"
Ecrit HKEY_CLASSES_ROOT, "ZiViewer." & Extension & "\Shell\Open\Command\", """" & App.Path & App.EXEName & ".exe" & """" & " " & """" & " %1" & """"
' NOTE : les 4 guillemets dans le code ("""") donnent a l'affichage un seul guillemet (")
' On s'en sert ici pour encadrer de guillemets le nom et chemin du prog ainsi que ceux du fichier appelant (%1)
' Si on ne les met pas, il y a des problèmes si le chemin d'accés du prog et/ou du fichier contient des espaces
Ecrit HKEY_CLASSES_ROOT, "." & Extension & "\", "ZiViewer." & Extension & ""
' Si tout s'est bien passé : message de confirmation
MsgBox "Association effectuée avec succès !"
End Sub

Bien sûr, il faut remplacer "ZiViewer" par le nom de votre programme. Un coup de Regedit et admirez le résultat !!!

Maintenant, si vous ne voulez que ajouter une option "Ouvrir avec..." avec votre programme, il suffit juste de :

Public Sub AjoutOption(Extension As String, Type As String)
' Pour rajouter une option "Ouvrir avec..."
' EX: AjoutOption "jpg", "jpegfile"
' [!] Ne pas mettre de point devant l'extension
Ecrit HKEY_CLASSES_ROOT, Type & "\Shell\Modif\", "Ouvrir avec ZiViewer"
Ecrit HKEY_CLASSES_ROOT, Type & "\Shell\Modif\Command\", """" & App.Path & App.EXEName & ".exe" & """" & " " & """" & " %1" & """"
' Si tout s'est bien passé : message de confirmation
MsgBox "Ajout effectué avec succès !"
End Sub

Dans le "dossier" shell, on en crée un nouveau, ici modif, dont le nom peut être différent (et à intérrêt de l'être pour éviter les conflits entre logiciels)
Ici, il vous faut connaitre le type du fichier. Or d'un logiciel à un autre (notamment pour les formats publics genres format graphiques gif, jpg, bmp...) le type de fichier peut être différent : Microsoft Photo Editor avec les fichiers JPEG donne le type "jpegfile" alors que paint avec un fichier Bitmap donne le type "paint.picture"

Pour connaitre le type d'un format, il suffit de récupérer le valeur suivante :
type = Reg.Lit(HKEY_CLASSES_ROOT, "." & EXTENSION_DONT_ON_RECHERCHE_LE_TYPE & "\")

Si vous voulez ajouter une option à un dossier (style winamp qui crée une playlist avec tous les fichiers du dossier), le type est "Folder" ou "Directory" (dépend apparemment de la version de Windows).

Pour savoir si un fichier à déjà l'option "ouvrir avec votre logiciel" :
deja = Reg.Lit(HKEY_CLASSES_ROOT, TYPE_DE_FICHIER & "\shell\" & NOM_DU_DOSSIER & "\command\")

Si vous avez des questions ou si le code n'est pas assez clair, n'hésitez pas à le dire en passant par les commentaires en bas de cette page !

A voir également

Ajouter un commentaire Commentaires
abeasse Messages postés 2 Date d'inscription samedi 25 novembre 2006 Statut Membre Dernière intervention 12 juillet 2007
13 juil. 2007 à 18:24
REGEDIT4
[HKEY_CLASSES_ROOT\.mp3]
@="vlcfile"
[HKEY_CLASSES_ROOT\vlcfile\Shell\Open\command]
@="C:\\Program Files\\VideoLan\\vlc\\vlc.exe --started-from-file %1"
[HKEY_CLASSES_ROOT\vlcfile\DefaultIcon]
@="C:\\Program Files\\VideoLan\\vlc\\vlc.exe"

Tout ça dans un fichier reg et ça tourne pas mal
fadelovesky Messages postés 38 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 27 décembre 2008
13 janv. 2006 à 02:27
slt
j ai associé l'ext. *.mp3 a mon lecteur;ca marche parfaitement sauf que,quand le lecteur est ouvert et qu'il lit une chanson, alors que moi je double clique sur une autre ds l'explorateur windows, rien ne se passe!!
merci de ton aide d'avance
nsslive Messages postés 7 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 17 juillet 2007
6 nov. 2005 à 17:42
salut a tous, j'ai essayé ce code, en administrateur, sous XP, et malgré le message de succes,
mon fichier .mlp ne se s'associe pas a mon prog, est ce que quelqu'un connais le probleme et
pourrai eventuellement m'éclairer paske la je suis dans le flou artistique le plus complet
moi et la base de registre...
merci d'avnace
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
5 déc. 2004 à 20:03
Wai voilà parfait merci j'ai trouvé ! Cétait tout con, en fait, c'est dans la variable Command ...
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
5 déc. 2004 à 18:58
Merci je vais aller voir, je te dis quoi ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.