Association d'une extension a une application (ex: *.doc = ms word)

Contenu du snippet

Faire les déclaration suivantes dans un MODULE:

Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_LOCAL_MACHINE = &H80000002

Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hkey&, ByVal lpszSubKey$, lphKey&) As Long
Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hkey&, ByVal lpszSubKey$, ByVal fdwType&, ByVal lpszValue$, ByVal dwLength&) As Long

Public Const MAX_PATH = 256&
Public Const REG_SZ = 1

Source / Exemple :


Sub CréationAssociation()
    Dim NomClef As String
    Dim ValeurClef As String
    Dim RetVal As Long
    Dim ClefHandle As Long
    
    NomClef = "Software" & NomLogiciel ' ATTENTION: il y a un "backslash" entre "Software" et Nomlogiciel (inverse de "/", mais ça ne s'affiche pas sur ce site !?)
    ValeurClef = CheminEXE
    RetVal = RegCreateKey(HKEY_LOCAL_MACHINE, NomClef, ClefHandle)
    RetVal = RegSetValue(ClefHandle, "", REG_SZ, ValeurClef, 0&)
    
    NomClef = NomLogiciel
    ValeurClef = TypeFichier
    RetVal = RegCreateKey(HKEY_CLASSES_ROOT, NomClef, ClefHandle)
    RetVal = RegSetValue(ClefHandle, "", REG_SZ, ValeurClef, 0&)
    
    NomClef = Extension
    ValeurClef = NomLogiciel
    RetVal = RegCreateKey(HKEY_CLASSES_ROOT, NomClef, ClefHandle)
    RetVal = RegSetValue(ClefHandle, "", REG_SZ, ValeurClef, 0&)
    
    NomClef = NomLogiciel
    ValeurClef = CheminEXE & " ""%1"""
    RetVal = RegCreateKey(HKEY_CLASSES_ROOT, NomClef, ClefHandle)
    RetVal = RegSetValue(ClefHandle, "shellopencommand", REG_SZ, ValeurClef, MAX_PATH)
    ValeurClef = CheminIcône & ",0"
    RetVal = RegSetValue(ClefHandle, "DefaultIcon", REG_SZ, ValeurClef, MAX_PATH)

End Sub

Conclusion :


Les Variables à définir soi-même sont:

NomLogiciel: Exemple: "Mon logiciel"
CheminEXE: Exemple: "C:MonLogiciel.exe"
TypeFichier: Exemple: "Document Mon Logiciel"
Extension: Exemple: ".log"
CheminIcône: Exemple: "C:MonLogiciel.ico"

Et voilà ! Exécutez la fonction lors du (premier) lancement de votre application et le tour est joué.

Deux trucs:
- pour obtenir le chemin de l'exe, si vous distribuez vos applications, utilisez la propriété "App.Path"
- pour connaître le chemin du fichier qui a ouvert votre application (double-clic sur un fichier don l'extension est celle définie ci-dessus), utilisez la variable système "Command()" (CheminFichier = Command()".

A voir également

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.