Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

COMMENT ASSOCIER DES EXTENTIONS À SON PROGRAMME, AINSI QU'UN ICÔNE AUX FICHIERS D'EXTENTIONS DÉSIRÉES?


Information sur la source

Catégorie :Trucs & Astuces Niveau : Initié Date de création : 18/02/2004 Date de mise à jour : 19/02/2004 23:35:55 Vu : 3 248

Note :
7,67 / 10 - par 9 personnes
7,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

Description

J'ai pas trouver une fonction aussi simple que celle que j'ai créer sur le site, de plus elle est très facile à utiliser ;-) .
 

Source

  • 'Déclarations des API necessaires :
  • Private Declare Sub SHChangeNotify Lib "shell32.dll" ( _
  • ByVal wEventId As Long, _
  • ByVal uFlags As Long, _
  • dwItem1 As Any, _
  • dwItem2 As Any)
  • 'Déclarations des constantes nécessaires :
  • Private Const SHCNE_ASSOCCHANGED = &H8000000
  • Private Const SHCNF_IDLIST = &H0&
  • Private Function Associer(AdApp As String, AdIcon As String, Extention As Variant, NomDuFichier As String) As Boolean
  • On Error GoTo F 'Si une erreur subsiste aller à la ligne F
  • Set WshShell = CreateObject("Wscript.Shell") 'Création d'un object WshShell
  • For v = LBound(Extention, 1) To UBound(Extention, 1) 'V variant de l'index le plus bas de la matrice Extention jusqu'a son plus haut niveau
  • WshShell.RegWrite "HKEY_CLASSES_ROOT\." & Extention(v) & "\", NomDuFichier, "REG_SZ" 'Association de l'extention a un type "NomDuFichier"
  • Next v
  • AdSp = "HKEY_CLASSES_ROOT\" & NomDuFichier & "\" 'Simplification basique
  • WshShell.RegWrite AdSp, NomDuFichier & " General", "REG_SZ"' Declaration de l'emplacement spécifique
  • WshShell.RegWrite AdSp & "DefaultIcon\", AdIcon, "REG_SZ" 'Permet de mettre l'adresse de l'icone à asssocier
  • WshShell.RegWrite AdSp & "Shell\open\command\", Chr(34) & AdApp & Chr(34) & " %1", "REG_SZ" 'Indique le chemin de lexe a ouvrir
  • SHChangeNotify SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0 'Reinitialise la base dicone par defaut de windows
  • Associer = True 'Fonction a bien fonctionner donc Associer est vrai
  • F:
  • End Function
  • Private Sub Form_Load()
  • Insérer
  • End Sub
  • Sub Insérer()
  • ExtentionAMettreEnRelation = Array("kh1", "kh2", "kh4") 'Matrice des extentions à associer
  • CheminDeLAppli$ = "d:\sp\Khorne.exe"
  • CheminDeLicone$ = "d:\sp\Khorne.ico"
  • NomDuGenreDeFichier$ = "Image Cryptée Spécifique"
  • If Associer(CheminDeLAppli$, CheminDeLicone$, ExtentionAMettreEnRelation, NomDuGenreDeFichier$) Then MsgBox "Changement réussi.", vbInformation, "Super ça a marché!!!" Else: If (MsgBox("Ca n'a pas marché car l'un des paramétre insérer est mauvais.", vbCritical + vbYesNo, "Erreur") = vbYes) Then Insérer 'Si ca a pas marché on demande une réitération de l'opération
  • End Sub
'Déclarations des API necessaires : 
Private Declare Sub SHChangeNotify Lib "shell32.dll" ( _ 
ByVal wEventId As Long, _ 
ByVal uFlags As Long, _ 
dwItem1 As Any, _ 
dwItem2 As Any) 
'Déclarations des constantes nécessaires : 
Private Const SHCNE_ASSOCCHANGED = &H8000000 
Private Const SHCNF_IDLIST = &H0& 

Private Function Associer(AdApp As String, AdIcon As String, Extention As Variant, NomDuFichier As String) As Boolean 
    
    On Error GoTo F 'Si une erreur subsiste aller à la ligne F
    
    Set WshShell = CreateObject("Wscript.Shell") 'Création d'un object WshShell

    For v = LBound(Extention, 1) To UBound(Extention, 1) 'V variant de l'index le plus bas de la matrice Extention jusqu'a son plus haut niveau
        WshShell.RegWrite "HKEY_CLASSES_ROOT\." & Extention(v) & "\", NomDuFichier, "REG_SZ" 'Association de l'extention a un type "NomDuFichier"
    Next v 
    
    AdSp = "HKEY_CLASSES_ROOT\" & NomDuFichier & "\" 'Simplification basique
    WshShell.RegWrite AdSp, NomDuFichier & " General", "REG_SZ"' Declaration de l'emplacement spécifique 
    WshShell.RegWrite AdSp & "DefaultIcon\", AdIcon, "REG_SZ" 'Permet de mettre l'adresse de l'icone à asssocier
    WshShell.RegWrite AdSp & "Shell\open\command\", Chr(34) & AdApp & Chr(34) & " %1", "REG_SZ" 'Indique le chemin de lexe a ouvrir
    SHChangeNotify SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0 'Reinitialise la base dicone par defaut de windows
    Associer = True 'Fonction a bien fonctionner donc Associer est vrai
    
F: 

End Function 

Private Sub Form_Load() 
    Insérer 
End Sub 

Sub Insérer() 
    ExtentionAMettreEnRelation = Array("kh1", "kh2", "kh4") 'Matrice des extentions à associer
    CheminDeLAppli$ = "d:\sp\Khorne.exe" 
    CheminDeLicone$ = "d:\sp\Khorne.ico" 
    NomDuGenreDeFichier$ = "Image Cryptée Spécifique" 
    If Associer(CheminDeLAppli$, CheminDeLicone$, ExtentionAMettreEnRelation, NomDuGenreDeFichier$) Then MsgBox "Changement réussi.", vbInformation, "Super ça a marché!!!" Else: If (MsgBox("Ca n'a pas marché car l'un des paramétre insérer est mauvais.", vbCritical + vbYesNo, "Erreur") = vbYes) Then Insérer 'Si ca a pas marché on demande une réitération de l'opération
End Sub

Conclusion

Voilà c tout. Un petit truc bien utile quand son application utilise des fichier spécifique pour travailler avec.
 

Commentaires et avis

signaler à un administrateur
Commentaire de azerty25 le 19/02/2004 07:00:47

Pk vous mettez des notes pareilles sans laisser de commentaire ?!

signaler à un administrateur
Commentaire de Cracker le 19/02/2004 10:01:33

Source très intéressante, je n'ai pas le temps de la tester mais ca faisait longtpemps que je cherchais a faire ça simplement !!
Par contre des commentaires aurait été les bienvenue !
Aller 8/10 !!!

signaler à un administrateur
Commentaire de Disicom le 19/02/2004 10:35:51

Ouai c'est clair, peux-tu mettre des commentaires ca serait sympa.

Merci

++

Disicom

signaler à un administrateur
Commentaire de sibi12 le 19/02/2004 16:46:44

Salut,

Je ne connaissait pas cette api...j'avait fait un code semblable il y un petit  temps et j'ai du passer par la commande dos assoc si je me souvient bien...

C'est beaucoup plus simple comme ça...

sinon belle source...les noms de variable et des fonctions sont bien explicite...ce code risque de servir a pas mal de monde

Dommage que la source ne soit pas "propre" et qu'il n'y a pas de commentaire...les long noms de variable reduise la lisibilité...(sourtout pour la fonction inserrer)

je mettrais un 10 pour le fond un 8 pour la forme donc 9 ;-)

@+

signaler à un administrateur
Commentaire de gandalfkhorne le 19/02/2004 23:28:27

Désolé je n'ai pas l'habitude de mettre des commentaires mais je vais m'en occuper de suite ;-)

signaler à un administrateur
Commentaire de gibozsec le 20/02/2004 01:38:18

En effet c'est très bien, j'avais besoin d'un truc comme ca pour un truc que j'avais fait il y a longtemps, je vais peut être le rajouté.

Il serait intéressant que tu ajoute le code pour récupéré les paramètres de la ligne de commande (pour savoir quel fichier a lancé l'application).

signaler à un administrateur
Commentaire de gandalfkhorne le 20/02/2004 10:57:00

Le seul paramétre te permettant de savoir quel fichier a été lancé avec, est la fonction Command qui te retourne l'adresse du fichier ouvert.

signaler à un administrateur
Commentaire de NHenry le 27/02/2004 16:35:11

Moi, j'utilise un .bas que j'ai récupérer sur vbasic.org. Accès au registre, regkeys qu'il s'appel je croi.

signaler à un administrateur
Commentaire de cmoapierre le 28/03/2004 21:01:18

ca marcheré mieux ak une source car la tu explike pa grand chose
Jattent une amélioration

signaler à un administrateur
Commentaire de clementpat le 26/12/2004 23:55:22

Voila ce que je cherche , merci a toi , je teste !

signaler à un administrateur
Commentaire de vienbv le 02/08/2006 03:18:37

Voila, ce que je voudrais chercher. Merci beaucoup

signaler à un administrateur
Commentaire de PaTaTe le 05/09/2007 18:09:30

Avoir l'exacte contraire (à savoir dissocier une extension d'un programme), ça aurait pu être sympa.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.