Associer un type de fichier à votre programme

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 380 fois - Téléchargée 42 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
Messages postés
2
Date d'inscription
samedi 25 novembre 2006
Statut
Membre
Dernière intervention
12 juillet 2007

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
Messages postés
38
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
27 décembre 2008

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
Messages postés
7
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
17 juillet 2007

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
Messages postés
245
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2008

Wai voilà parfait merci j'ai trouvé ! Cétait tout con, en fait, c'est dans la variable Command ...
Messages postés
245
Date d'inscription
dimanche 27 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2008

Merci je vais aller voir, je te dis quoi ;)
Afficher les 27 commentaires

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.