begin process at 2012 02 13 23:27:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > ASSOCIER UN TYPE DE FICHIER À VOTRE PROGRAMME

ASSOCIER UN TYPE DE FICHIER À VOTRE PROGRAMME


 Information sur la source

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Niveau :Débutant Date de création :17/06/2002 Date de mise à jour :17/06/2002 18:40:33 Vu :10 611

Auteur : matrey

Ecrire un message privé
Commentaire sur cette source (27)
Ajouter un commentaire et/ou une note

 Description

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 !




 Sources du même auteur

Source avec Zip Source avec une capture ENVOI DE MAIL (QUI MARCHE ! - V 2.00)
Source avec Zip MODIFIEZ LES PROPRIETES DE VOS FICHIERS PDF !
Source avec Zip ACTIVELOCK : LES SOURCES
Source avec Zip ENVOI DE MAIL (QUI MARCHE ! - V 1.00)
Source avec Zip CRÉER UNE AIDE CONTEXTUELLE

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert
Source avec Zip Source avec une capture JEUX DE VERITÉ ET DE FIDELITÉ par billatosco
Source avec Zip IMAGELOARDER par vkitumaini
Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN CALENDRIER DE POCHE par Le Pivert
Source avec Zip RECHERCHE D'UN ENREGISTREMENT DANS UNE DATATABLE ET POSITION... par erdna

Commentaires et avis

Commentaire de psykocrash le 18/06/2002 13:21:54

tu trouve pas que c'est un peu long?
t'a 2 vleurs ç créer :
"hkey_classes_root*.extention, "ExtentionName"
lancement = chr$(34) & "%1" & chr$(34) & " %*"
"hkey_classes_rootExtentionNameshellopencommand", lancement
alors pourquoi faire compliqué ?

Commentaire de matrey le 18/06/2002 21:14:17

c'est plus marrant ;-)

Commentaire de matrey le 21/06/2002 20:58:46

Plus sérieusement, je n'ai pas eu le temps de tester ta solution. En tout cas, moi j'ai observé, pour faire cette source, les clés qui changeaient dans la regedit (avec un logiciel spécialisé) lorsque j'associais le type de fichier xyz à Paint, et j'en ai déduit la marche à suivre. Peut être qu'il suffit de mettre une clé et que le reste peut être créé automatiquement, mais là, je ne peux rien assurer.

Commentaire de cbjp85 le 23/03/2003 11:56:38

Quel code a tapé ds le source pour gérer les ouvertures de fichiers par double click ??

Commentaire de matrey le 23/03/2003 17:40:48

cbjp85 -> Il faut récupérer la ligne de commande dans le sub_main de ton prog'
Regarde çà : http://www.vbfrance.com/article.aspx?Val=7568

Commentaire de cbjp85 le 23/03/2003 18:11:17

doh! g pas acces aux sources pour vb6 vu que g .NET :'(
Ou je peux consulter qc d'équivalent ?

Commentaire de cbjp85 le 30/03/2003 17:10:48

matrey !! stp

Commentaire de guizmo123 le 17/05/2003 11:52:19

Un peu trop long ton code....... :-(

Commentaire de gmni le 02/06/2003 02:26:40

C'est bien comme source, mais y a t'il un moyen pour supprimer
l'association des fichiers ?

Commentaire de matrey le 02/06/2003 16:57:58

théoriquement, tu fais la manip en sens inverse... mais comme on est sous windows, je garantis rien :D

Commentaire de ralf19b3 le 14/11/2003 21:25:33

pas moyen d'avoir un zip??

Commentaire de matrey le 14/11/2003 22:40:46

ben c'est plus une astuce qu'un code donc...

Commentaire de ralf19b3 le 19/11/2003 12:33:58

oui je me doute mais bon chez moi pas moyen que ca marche, l'association ne se creer pas malgre le message pour m'indiquer que ca c corectement realiser, donc si quelq'un a realiser un zip je suis preneur=) Merci d'avance

Commentaire de ralf19b3 le 19/11/2003 12:35:16

meme en priver...

Commentaire de matrey le 19/11/2003 19:40:27

Dsl mais là j'ai un peu mis de côté le VB pour le moment. Je te conseille d'aller voir ma source de laquelle j'ai tiré ce tutorial. Au moins c'est sûr que çà marche (enfin à l'époque XP existait pas donc çà peut piner depuis)...
Je te laisse essayer :

http://www.vbfrance.com/code.aspx?ID=6071

Commentaire de autreProgMan le 08/06/2004 13:52:36

Merci.. Mais comment recuperer dans un prog le chemin du fichier qu'on veut ouvrir?

Commentaire de matrey le 08/06/2004 15:10:41

autreProgMan --> vas voir un exemple concret d'utilisation de cette source : http://www.vbfrance.com/code.aspx?ID=6071
il y a la réponse à ta question

Commentaire de ailioss123456ailioss le 21/07/2004 16:06:52

ca marchera pas avec xp, si on n'a pas les priviléges administrateur..

Commentaire de GlanduSchmoldu le 30/07/2004 01:40:11

Bon avec la source et la reflexion de psychocrash j'ai fini par comprendre. J'ai réussi  à créer une nouvelle extension comme ça, ya pas de problème.

MAIS en modifiant de la même manière l'extension .jpg associée au "jpegfile", rien.
Ce n'est qu'apres moulte recherches que je me suis aperçu que la clé determinante n'avait rien avoir du tout : c'est "HKEY_USERS\S-1-5-21-515967899-2049760794-839522115-500\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.JPG" qui doit contenir juste "ZiWiewer.exe" (pour reprendre l'exemple). Clé qui contient aussi la liste du "Ouvrir avec", soit dit en passant.

Quelqu'un aurait-il des explications à cet étrange mystère que j'aimerais bien savoir ce qu'il faut changer ?

Commentaire de GlanduSchmoldu le 30/07/2004 12:57:22

Bon j'ai compris en fait c'est chaque fois qu'on clique "Ouvrir avec ..." sur un fichier et qu'on coche "Toujours utilser ce programme par défaut" ça cré une valeur "Application" dans la clé citée au dessus qui contient le nom de l'exe, et qui suplante la clé de HKEY_CLASSES_ROOT.
C'est bien ça m'avance pas à grand chose. Si l'association a été modifiée, peux plus la changer. Aie.

Commentaire de Ziman le 05/12/2004 00:06:14

Salut et merci pour ce code

Saurais-tu par hasard comment faire pour récupérer le fichier ouvert, je m'explique, imagine que aaa.jpg soit ouvert et que ton programme se lance, comment l'image est-elle affichée ? Comment le programme sait-il que c'est C:\aaa.jpf à afficher ?

Commentaire de matrey le 05/12/2004 16:21:32

Salut Ziman

Je suis désolé de pas pouvoir de donner directement le morceau de code concerné. Cependant si tu vas voir ma source "ZiViewer", tu pourras voir que le logiciel fait ce que tu recherches. Jette un coup d'oeil et sers-toi dans le code !

Commentaire de Ziman le 05/12/2004 18:58:22

Merci je vais aller voir, je te dis quoi ;)

Commentaire de Ziman le 05/12/2004 20:03:23

Wai voilà parfait merci j'ai trouvé ! Cétait tout con, en fait, c'est dans la variable Command ...

Commentaire de nsslive le 06/11/2005 17:42:27

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

Commentaire de fadelovesky le 13/01/2006 02:27: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

Commentaire de abeasse le 13/07/2007 18:24:36

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

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales