Bonjour,
Voilà ce que j'ai trouvé en VB6 pour associer mon programme à un type de fichier (extension) :
Ou alors :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Public Sub CreateAssociationFile(EXT As String, FileType As String, FileName As String, IconPath As String) Dim b As Object On Error Resume Next Set b = CreateObject("wscript.shell") b.regwrite "HKCR\" & EXT & "\", FileType b.regwrite "HKCR\" & FileType & "\", App.EXEName b.regwrite "HKCR\" & FileType & "\DefaultIcon\", IconPath b.regwrite "HKCR\" & FileType & "\shell\open\command\", FileName & " %L" b.regdelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\Application" b.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\Application", FileName b.regdelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\OpenWithList\" b.regwrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" & EXT & "\OpenWithList\a", FileName End Sub
Ce que je souhaiterai faire, c'est de pouvoir directement faire cela lors de l'installation via InnoSetup.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_LOCAL_MACHINE = &H80000002 Public Const MAX_PATH = 256& Public Const REG_SZ = 1 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 Sub CreateFileAssociation(EXT As String, FileType As String, FileName As String, FilePathEXE As String, IconPath As String) Dim NomClef As String Dim ValeurClef As String Dim RetVal As Long Dim ClefHandle As Long On Error Resume Next NomClef = "Software\" & FileName ValeurClef = FilePathEXE RetVal = RegCreateKey(HKEY_LOCAL_MACHINE, NomClef, ClefHandle) RetVal = RegSetValue(ClefHandle, "", REG_SZ, ValeurClef, 0&) NomClef = FileName ValeurClef = FileType RetVal = RegCreateKey(HKEY_CLASSES_ROOT, NomClef, ClefHandle) RetVal = RegSetValue(ClefHandle, "", REG_SZ, ValeurClef, 0&) NomClef = EXT ValeurClef = FileName RetVal = RegCreateKey(HKEY_CLASSES_ROOT, NomClef, ClefHandle) RetVal = RegSetValue(ClefHandle, "", REG_SZ, ValeurClef, 0&) NomClef = FileName ValeurClef = FilePathEXE & " ""%1""" RetVal = RegCreateKey(HKEY_CLASSES_ROOT, NomClef, ClefHandle) RetVal = RegSetValue(ClefHandle, "shell\open\command", REG_SZ, ValeurClef, MAX_PATH) ValeurClef = IconPath & ",0" RetVal = RegSetValue(ClefHandle, "DefaultIcon", REG_SZ, ValeurClef, MAX_PATH) End Sub
Je suppose qu'il doit exister une fonctionalité qui fait ça directement.
Je pourrais évidemment écrire via InnoSetup dans la base de registre comme ci dessus (code VB6) ... Cependant, la méthode VB6 qui écrit dans le registre ne marche pas à 100 %
Si je fais un clic droit "Propriétés" sur mon fichier après avoir lancer le module d'association, l'explorer Windows mouline et ne s'arrête pas ...
Par contre si je double clic pour lancer le prog, aucun problème.
Une idée du problème sur mon code VB6 ? Ou alors une solution via InnoSetup ?
Merci d'avance pour votre aide !
++
Merci d'avance pour votre aide
Partager