association fichiers Windows VISTA
association fichiers Windows VISTA
Salut à tous, j'aimerai savoir comment associer un fichier avec un programme sous windows vista.
Sur XP j'utilise la fonction associatefiletoEX() mais apparement ca ne marche pas sur vista.
Merci de bien vouloir m'éclairer.
Sur XP j'utilise la fonction associatefiletoEX() mais apparement ca ne marche pas sur vista.
Merci de bien vouloir m'éclairer.
Code : Tout sélectionner
Procedure AssociateFileEx(ext$,ext_description$,programm$,Icon$,prgkey$,cmd_description$,cmd_key$)
cmd$=Chr(34)+programm$+Chr(34)+" "+Chr(34)+"%1"+Chr(34)
If GetVersion_() & $FF0000 ; Windows NT/XP
SetKey(#HKEY_CLASSES_ROOT, "Applications\"+prgkey$+"\shell\"+cmd_description$+"\command","",#REG_SZ ,@cmd$,Len(cmd$)+1)
If ext_description$
Key$=ext$+"_auto_file"
SetKey(#HKEY_CLASSES_ROOT ,"."+ext$ ,"",#REG_SZ,@Key$,Len(Key$)+1)
SetKey(#HKEY_CLASSES_ROOT ,Key$ ,"",#REG_SZ,@ext_description$,Len(ext_description$)+1)
If Icon$
SetKey(#HKEY_CLASSES_ROOT,Key$+"\DefaultIcon","",#REG_SZ,@Icon$,Len(Icon$)+1)
EndIf
EndIf
SetKey(#HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."+ext$,"Application",#REG_SZ,@prgkey$ ,Len(prgkey$)+1)
Else ;Windows 9x
SetKey(#HKEY_LOCAL_MACHINE,"Software\Classes\."+ext$ ,"",#REG_SZ,@prgkey$ ,Len(prgkey$)+1)
If ext_description$
SetKey(#HKEY_LOCAL_MACHINE,"Software\Classes\"+prgkey$ ,"",#REG_SZ,@ext_description$,Len(ext_description$)+1)
EndIf
If Icon$
SetKey(#HKEY_LOCAL_MACHINE,"Software\Classes\"+prgkey$+"\DefaultIcon" ,"",#REG_SZ,@Icon$ ,Len(Icon$)+1)
EndIf
If cmd_description$<>cmd_key$
SetKey(#HKEY_LOCAL_MACHINE,"Software\Classes\"+prgkey$+"\shell\"+cmd_key$,"",#REG_SZ,@cmd_description$,Len(cmd_description$)+1)
EndIf
SetKey(#HKEY_LOCAL_MACHINE,"Software\Classes\"+prgkey$+"\shell\"+cmd_key$+"\command","",#REG_SZ,@cmd$ ,Len(cmd$)+1)
EndIf
EndProcedure
Procedure AssociateFile(ext$,ext_description$,programm$,Icon$)
AssociateFileEx(ext$,ext_description$,programm$,Icon$,GetFilePart(programm$),"open","open")
EndProcedure
Si je me fie à la ligne 3 du code, c'est compatible uniquement XP et NT.
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Selon MSDN, AssociateFileEx existerait bien dans Vista : http://msdn2.microsoft.com/en-us/library/bb432512.aspx
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Cette ligne ne fait que repérer la version de Windows, et çà devrait être correct pour Vista (à vérifier).Atomo a écrit :Si je me fie à la ligne 3 du code, c'est compatible uniquement XP et NT.
Oui, mais à mon humble avis çà n'a rien à voir avec le code ci-dessus (Droopy lib ?) où AssociateFileEx() est une procédure purebasic utilisant des fonctions API de manipulation de la base de registres.Progi1984 a écrit :Selon MSDN, AssociateFileEx existerait bien dans Vista : http://msdn2.microsoft.com/en-us/library/bb432512.aspx
Le problème avec Vista (que je n'utilise pas) ne viendrait-il pas d'un problème de droits ?
Ou alors il faut utiliser #HKEY_CURRENT_USER au lieu de #HKEY_CLASSES_ROOT ?
pour la ligne 3 il repere bien windows vista je viens de tester, mais ca ne marche toujours pas en remplacant par #HKEY_CURRENT_USER.
sinon j'ai trouvé ce post de FREAK qui parle du registre et vista :
http://www.purebasic.fr/english/viewtop ... 27901413ab
je ne sais pas trop comment appliquer son code, merci de bien vouloir m'aider
sinon j'ai trouvé ce post de FREAK qui parle du registre et vista :
http://www.purebasic.fr/english/viewtop ... 27901413ab
je ne sais pas trop comment appliquer son code, merci de bien vouloir m'aider

C'est bien un problème de droits selon Freak, et il utilise #HKEY_CURRENT_USER.Atomo a écrit :sinon j'ai trouvé ce post de FREAK qui parle du registre et vista : http://www.purebasic.fr/english/viewtop ... 27901413ab
Remplacer #HKEY_CLASSES_ROOT par #HKEY_CURRENT_USER dans ton code ne suffit pas, la clé est aussi différente ("Software\CLASSES").
Tu dois donc tester si ton OS est Vista et utiliser un code adapté.
Essaie le code ci-dessous (très aproximatif, non testé, je n'ai pas Vista ... ni la Droopy lib ... ni PB sur ce PC!) :
Code : Tout sélectionner
SetKey(#HKEY_CURRENT_USER,"Software\Classes\."+ext$,"",#REG_SZ,@prgkey$,Len(prgkey$)+1)
If ext_description$
SetKey(#HKEY_CURRENT_USER,"Software\Classes"+prgkey$,"",#REG_SZ,@ext_description$,Len(ext_description$)+1)
EndIf
If Icon$
SetKey(#HKEY_CURRENT_USER,"Software\Classes"+prgkey$+"\DefaultIcon","",#REG_SZ,@Icon$,Len(Icon$)+1)
EndIf
If cmd_description$<>cmd_key$
SetKey(#HKEY_CURRENT_USER,"Software\Classes"+prgkey$+"\shell"+cmd_key$,"",#REG_SZ,@cmd_description$,Len(cmd_description$)+1)
EndIf
SetKey(#HKEY_CURRENT_USER,"Software\Classes"+prgkey$+"\shell"+cmd_key$+"\command","",#REG_SZ,@cmd$,Len(cmd$)+1)
Dernière modification par gnozal le jeu. 03/janv./2008 15:55, modifié 2 fois.