[R] Changer les paramètres d'un type de fichier
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
[R] Changer les paramètres d'un type de fichier
Bonjour,
Je voudrais faire un script qui change les paramètres d'un type de fichier (par ex .abc) :
- je voudrais changer la description du fichier (par ex un fichier .au3 a pour description "AutoIt v3 Script")
- je voudrais changer l'icône associée au fichier (j'ai un fichier .ico correspondant à la nouvelle icône)
- je voudrais changer le programme utilisé par défaut quand je double clique sur mon fichier : pour cela, je dispose d'un programme au3 et je voudrais que quand je double clique sur mon fichier, cela lance mon programme et que ça "simule" (je ne sais pas comment on peut appeler ça) "Fichier>ouvrir" dans mon programme en sélectionnant le bon fichier (comme le fait par ex SciTE quand je double clique un fichier au3 : lancement de SciTE et ouverture du fichier par SciTE)
Est-il possible de faire tout cela (ou au moins une partie) ?
Je voudrais faire un script qui change les paramètres d'un type de fichier (par ex .abc) :
- je voudrais changer la description du fichier (par ex un fichier .au3 a pour description "AutoIt v3 Script")
- je voudrais changer l'icône associée au fichier (j'ai un fichier .ico correspondant à la nouvelle icône)
- je voudrais changer le programme utilisé par défaut quand je double clique sur mon fichier : pour cela, je dispose d'un programme au3 et je voudrais que quand je double clique sur mon fichier, cela lance mon programme et que ça "simule" (je ne sais pas comment on peut appeler ça) "Fichier>ouvrir" dans mon programme en sélectionnant le bon fichier (comme le fait par ex SciTE quand je double clique un fichier au3 : lancement de SciTE et ouverture du fichier par SciTE)
Est-il possible de faire tout cela (ou au moins une partie) ?
Modifié en dernier par tolf le mer. 11 juin 2008 19:57, modifié 3 fois.
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Ayant cherché à faire la même chose que vous pour une de mes applications, voici ce que j'avais trouvé :
Il faut utiliser la commande ftype pour faire l'association des fichiers.
Voici un fonction que j'avais fait pour l'occasion :
Pour l'icône, j'avais fait ceci :
Il faut utiliser la commande ftype pour faire l'association des fichiers.
Voici un fonction que j'avais fait pour l'occasion :
Code : Tout sélectionner
Func _FiletypeAssociation($extension, $type, $program, $description = '')
; e.g. _FiletypeAssociation('.pdf', 'FoxitReader.Document', '"%ProgramFiles%\FoxitReader.exe" "%1"')
$exitcode = RunWait(@ComSpec & ' /c ftype ' & $type & '=' & $program & _
' && assoc ' & $extension & '=' & $type, '', @SW_HIDE)
If $description And Not $exitcode Then
Return RegWrite('HKCR' & $type, '', 'Reg_sz', $description)
EndIf
Return Not $exitcode
EndFunc ;==>_FiletypeAssociation
Code : Tout sélectionner
RegWrite("HKLM\SOFTWARE\Classes\NomDeMonProgramme\DefaultIcon", "", "REG_SZ", @ScriptDir & "\MonProgramme.exe,0")
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Merci pour les informations, mais je n'ai pas réussi à changer la description (j'ai toujours "Fichier ABC") et l'icône n'est pas changée : il y a sans doute un problème de syntaxe que j'ai mal comprise ^^
En plus, apparemmentchange l'icône du programme : est-il possible de ne changer que l'icône du fichier (car le programme ouvre plusieurs types de fichiers et je voudrais mettre une icône différente pour chaque fichier) ?
En plus, apparemment
Code : Tout sélectionner
RegWrite("HKLM\SOFTWARE\Classes\NomDeMonProgramme\DefaultIcon", "", "REG_SZ", @ScriptDir & "\MonProgramme.exe,0")
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Pour l'utilisation de _FiletypeAssociation si vous suivez l'exemple il n'y aura pas de problème.
Pour l'icône et la description, voici par exemple l'endroit ou ca se trouve pour AutoIt :
Pensez à re-démarrer votre ordinateur pour prendre en compte les modifications, ou tout simplement tuez la tache Explorer et re-créé là !!!
Pour l'icône et la description, voici par exemple l'endroit ou ca se trouve pour AutoIt :
Code : Tout sélectionner
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\AutoIt3Script] <= Description.
@="Script AutoIt v3"
[HKEY_CLASSES_ROOT\AutoIt3Script\DefaultIcon] <= Icône par défaut.
@="C:\\Program Files\\AutoIt3\\Icons\\filetype1.ico"
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Bonsoir,
J'ai essayé mais ça ne marche toujours pas.
J'ai fait des tests en utilisant SciTE comme programme ouvrant le fichier et j'ai fait cela :
J'ai essayé mais ça ne marche toujours pas.
J'ai fait des tests en utilisant SciTE comme programme ouvrant le fichier et j'ai fait cela :
Code : Tout sélectionner
_FiletypeAssociation(".abc", "Mon fichier Abc", '"%ProgramFiles%\AutoIt3\SciTE\SciTE.exe" "%1"', "Mon fichier Abc")
_ChangeIcone("SciTE", @ScriptDir & "..\mon_icone.ico")
Func _FiletypeAssociation($extension, $type, $program, $description = '')
; e.g. _FiletypeAssociation('.pdf', 'FoxitReader.Document', '"%ProgramFiles%\FoxitReader.exe" "%1"')
$exitcode = RunWait(@ComSpec & ' /c ftype ' & $type & '=' & $program & ' && assoc ' & $extension & '=' & $type, '', @SW_HIDE)
If $description And Not $exitcode Then
Return RegWrite('HKCR' & $type, '', 'Reg_sz', $description)
EndIf
Return Not $exitcode
EndFunc ;==>_FiletypeAssociation
Func _ChangeIcone($program_name, $icon)
RegWrite("HKCR\SOFTWARE\Classes\" & $program_name & "\DefaultIcon", "REG_SZ", $icon & ",0")
EndFunc
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Il y a quelques erreurs dans le code, c'est pour ça que ça ne fonctionne pas. 
Je viens de fignoler la fonction _FileTypeAssociation j'espère que ça vous conviendra.

Je viens de fignoler la fonction _FileTypeAssociation j'espère que ça vous conviendra.

Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
J'ai testé et apparemment, il y a un problème pour les RegWrite : j'ai @error = 2
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Code : Tout sélectionner
; Return 2 on association deletion if file extension is not exist
Autrement dit, vous essayez de supprimer une association non existante.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Non, le code d'erreur dont je parlais est celui retourné non pas par la fonction _FileTypeAssociation, mais par RegWrite :et
Code : Tout sélectionner
RegWrite('HKCR' & $DocumentType, '', 'Reg_sz', $Description)
Code : Tout sélectionner
RegWrite('HKCR' & $DocumentType & '\DefaultIcon', '', 'REG_SZ', $IconFile & ',' & $IconIndex)
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Quel OS avez-vous ?
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Je suis sous XP
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Hummmm effectivement, il y avais une erreur dans l'affichage du code.
L'outil de coloration syntaxique GeSHi est visiblement bugué et n'apprécie pas l'antislash dans les simples quotes !!!
J'ai adapté le code et il est affiché correctement maintenant.
Désolé.
L'outil de coloration syntaxique GeSHi est visiblement bugué et n'apprécie pas l'antislash dans les simples quotes !!!
J'ai adapté le code et il est affiché correctement maintenant.
Désolé.

Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Merci, ça marche enfin
!
J'ai juste une petite remarque à faire : quand je veux supprimer l'association, l'icône et la description sont supprimées, mais pas le logiciel d'ouverture par défaut. Est-il possible de corriger ça ?

J'ai juste une petite remarque à faire : quand je veux supprimer l'association, l'icône et la description sont supprimées, mais pas le logiciel d'ouverture par défaut. Est-il possible de corriger ça ?
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Je n'ai pas ce problème sur mon PC !!!
J'ai tester avec l'exemple 1 :avec un fichier Test1.abc sur le bureau, et l'association se passe sans problème.
Ensuite avec :l'association est bien supprimée, et si je fait deux cliques de souris sur le fichier Test1.abc, il me demande avec quel logiciel il doit l'ouvrir !!!
Peut être que chez vous, vous devez re-démarrer l'ordinateur.
J'ai tester avec l'exemple 1 :
Code : Tout sélectionner
_FiletypeAssociation(".abc", "abc.Document", "%ProgramFiles%\AutoIt3\SciTE\SciTE.exe")
Ensuite avec :
Code : Tout sélectionner
_FiletypeAssociation(".abc")
Peut être que chez vous, vous devez re-démarrer l'ordinateur.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
En fait, j'avais dans mes tests utilisé une extention pour laquelle j'avais déjà spécifié un programme d'ouverture (en passant par le menu Outils > Options des dossiers > Types de fichiers de l'explorateur windows) et du coup, en supprimant l'association, j'étais revenu au premier programme par défaut.
Par contre, avec une nouvelle extension, ça marche... mais quand je double-clique, le programme d'ouverture reste dans les programmes recommandés.
Excusez ma précision des petits détails, mais est-il possible de tout effacer ?
Par contre, avec une nouvelle extension, ça marche... mais quand je double-clique, le programme d'ouverture reste dans les programmes recommandés.
Excusez ma précision des petits détails, mais est-il possible de tout effacer ?
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Le code est modifié pour supprimer totalement une extension même crée avec l'explorer. 
J'en ai même profité pour améliorer une petite chose : c'est de pouvoir utiliser l'extension au format .ext ou plus simplement ext et donc de se passer de l'utilisation du point.

J'en ai même profité pour améliorer une petite chose : c'est de pouvoir utiliser l'extension au format .ext ou plus simplement ext et donc de se passer de l'utilisation du point.

Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
J'ai essayé de supprimer une extension avec la nouvelle fonction et toutes mes extensions ont été supprimés !
Comment faire pour réparer ça (même les .exe .lnk ne souvrent pas) ?
Comment faire pour réparer ça (même les .exe .lnk ne souvrent pas) ?
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
C'est effectivement pas très cool. Il m'était arrivé la même chose hier, par ce que je n'avais pas fait attention et $Extension était vide ou ne contenait que le point donc il à tout virer. 
La seule solution c'est de restaurer la base de registre, ou tout simplement de récupérer cette clé de registre d'une autre session puis manuellement en ligne de commande de restaurer :
"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" avec regedit.
J'avais fait Démarrer / Excécuter / CMD.exe.
Puis quand il m'a demander avec quoi ouvrir, j'ai été dans c:\Windows\System32 et j'ai cliqué sur cmd.exe.
Après en ligne de commande il suffit d'utiliser Regedit et le fichier .reg de l'export de la clé.
Je vais rajouter de ce pas dans le code une fonction qui vérifie que $Extension ne soit pas vide ou égal à ".".
J'espère que vous y arriverez sans trop de problème.

La seule solution c'est de restaurer la base de registre, ou tout simplement de récupérer cette clé de registre d'une autre session puis manuellement en ligne de commande de restaurer :
"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" avec regedit.
J'avais fait Démarrer / Excécuter / CMD.exe.
Puis quand il m'a demander avec quoi ouvrir, j'ai été dans c:\Windows\System32 et j'ai cliqué sur cmd.exe.
Après en ligne de commande il suffit d'utiliser Regedit et le fichier .reg de l'export de la clé.
Je vais rajouter de ce pas dans le code une fonction qui vérifie que $Extension ne soit pas vide ou égal à ".".
J'espère que vous y arriverez sans trop de problème.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Et comment on récupère d'une autre session plus exactement ?
- Tlem
- Site Admin
- Messages : 11791
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Changer les paramètres d'un type de fichier
Heuuu c'est pire que ce que je croyais, car c'est une partie de la HKCR qui est supprimée !!!
Je viens juste de refaire l'expérience.
Par contre heureusement pour moi j'utilise un outil pour sauvegarder ma base de registre, et j'ai donc pu la restaurer rapidement.
Je viens de supprimé le code temporairement, le temps de voir ce qu'il en est.
En attendent, essayez de restaurer votre base de registre avec ceci :
http://www.hsf.tuxolem.com/Restaurer_la ... re_XP.html
ou en lançant en mode console (comme expliqué précédement) :
C:\Windows\system32\restore\rstrui.exe
Je viens juste de refaire l'expérience.
Par contre heureusement pour moi j'utilise un outil pour sauvegarder ma base de registre, et j'ai donc pu la restaurer rapidement.
Je viens de supprimé le code temporairement, le temps de voir ce qu'il en est.
En attendent, essayez de restaurer votre base de registre avec ceci :
http://www.hsf.tuxolem.com/Restaurer_la ... re_XP.html
ou en lançant en mode console (comme expliqué précédement) :
C:\Windows\system32\restore\rstrui.exe
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".