Page 1 sur 2
[R] Définir l'icône d'un fichier.
Posté : mer. 19 oct. 2011 22:08
par theAvenger
Par curiosité (je n'en ai pas vraiment l'utilité pour le moment), j'aimerais savoir comment ont défini l'icône qu'aura un fichier dans le gestionnaire de fichier (explorer). Merci de vos réponses !
Re: [..] Définir l'icône d'un fichier.
Posté : mer. 19 oct. 2011 22:54
par sylvanie
Bonsoir,
j'ai trouvé ceci sur le forum américain :
http://www.autoitscript.com/forum/topic ... -filetype/
regardez surtout l'exple sous forme de script, le reste étant des alternatives manuelles.
Re: [..] Définir l'icône d'un fichier.
Posté : mer. 19 oct. 2011 23:27
par theAvenger
Il faut donc inscrire dans le registre une clé qui contient le chemin et le nom de l'icone ?
Code : Tout sélectionner
RegWrite("HKEY_CLASSES_ROOT\" & [valeur de la clé de l'extension] & "\Shell\" & $cmd & "\Command\", "", "REG_SZ", [chemin\et\nom\de\l'icone\de\l'extension])
En revanche, je n'ai pas compris l'utilité de la variable $cmd.
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 10:47
par sylvanie
bonjour
$cmd réfère à l'action faite sur l'extension.
Par défaut, on a "open" sur la plus part des extensions. Ceci ouvre avec le programme associé.
Mais on peut en avoir d'autres actions cumulées comme "play", "shell" ... qui peuvent lancer d'autres exe et donc on a d'autres icônes associées à ces actions.
Par défaut on voit celle associée à "open" dans l'explorateur.
Mais à tester en étant bien réveillé car on a vite fait de mettre le bazar (de plus le script doit être lancé en admin si on a besoin de faire un write dans HKEY_CLASSES_ROOT)
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 15:54
par theAvenger
Donc, il suffira de faire
Code : Tout sélectionner
RegWrite("HKEY_CLASSES_ROOT\" & [valeur de la clé de l'extension] & "\Shell\" & [commande (open)] & "\Command\", "", "REG_SZ", [chemin\et\nom\de\l'icone\de\l'extension])
La valeur de la clé de l'extension est l'extension du fichier (.doc, .ini, .fichier, .pèrenoël), la commande c'est open (puisque l'icône doit être celle définie pour ouvrir le fichier avec un certain exécutable) et le chemin, ben, c'est le chemin de l'icône.
Je me trompe ?
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 16:12
par sylvanie
oui c'est ça (enfin dans le sens où tu ne te trompes pas)
Je viens de faire la manipulation manuellement via regedit sur un .elephant (ça pourraît être du php ^^) et ça le fait à une restriction prêt : j'ai mon icône qui est incrusté dans l'icône sous forme de page cornée ...
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 18:01
par theAvenger
Heu... Ce n'est pas exactement ce que j'attendais. Peut-être en modifiant la commande (open, play, shell) ? Peut-être avec "DefaultIcon" ?
Si tu me dis comment tu as fais, je pourrais essayer aussi.
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 18:25
par mikell
Sur mon XP j'ai ça qui marche (fichier à extension .tagada) :
► Afficher le texte
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.tagada]
@="tsointsoin"
[HKEY_CLASSES_ROOT\tsointsoin\DefaultIcon]
@="C:\\WINDOWS\\icons\\crane.ico,0"
[HKEY_CLASSES_ROOT\tsointsoin\shell]
[HKEY_CLASSES_ROOT\tsointsoin\shell\open]
[HKEY_CLASSES_ROOT\tsointsoin\shell\open\command]
@="%SystemRoot%\system32\NOTEPAD.EXE %1"
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 18:26
par theAvenger
Qu'est-ce que c'est "tsointsoin" ?
Et est-ce que les doubles "\" sont nécessaires ?
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 18:37
par mikell
.tagada c'est l'extension, tsointsoin c'est la classe
Pour le registre, dans un .reg les \\ sont nécessaires
Dans ce cas "open" se fait avec notepad.exe
Voilà le reg complet (pour mon XP)
► Afficher le texte
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.tagada]
@="tsointsoin"
[HKEY_CLASSES_ROOT\tsointsoin\DefaultIcon]
@="C:\\WINDOWS\\icons\\crane.ico,0"
[HKEY_CLASSES_ROOT\tsointsoin\shell]
[HKEY_CLASSES_ROOT\tsointsoin\shell\open]
[HKEY_CLASSES_ROOT\tsointsoin\shell\open\command]
@="%SystemRoot%\system32\NOTEPAD.EXE %1"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tagada]
"Application"="NOTEPAD.EXE"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tagada\OpenWithList]
"a"="NOTEPAD.EXE"
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 18:48
par theAvenger
Il faut donc faire ceci en AutoIt :
Code : Tout sélectionner
RegWrite("HKEY_CLASSES_ROOT\.tagada", "", "REG_SZ", "tsointsoin")
RegWrite("HKEY_CLASSES_ROOT\tsointsoin\DefaultIcon", "", "REG_SZ", "C:\\WINDOWS\\icons\\crane.ico,0")
RegWrite("HKEY_CLASSES_ROOT\tsointsoin\shell", "", "REG_SZ")
RegWrite("HKEY_CLASSES_ROOT\tsointsoin\shell\open", "", "REG_SZ")
RegWrite("HKEY_CLASSES_ROOT\tsointsoin\shell\open\command", "", "REG_SZ", "%SystemRoot%\system32\NOTEPAD.EXE %1")
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tagada", "", "REG_SZ", "Application=NOTEPAD.EXE")
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tagada\OpenWithList", "", "REG_SZ", "a=NOTEPAD.EXE")
??
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 19:35
par mikell
Oui sauf
Code : Tout sélectionner
RegWrite("HKEY_CLASSES_ROOT\tsointsoin\shell")
RegWrite("HKEY_CLASSES_ROOT\tsointsoin\shell\open")
...
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tagada", "Application", "REG_SZ", "NOTEPAD.EXE")
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tagada\OpenWithList", "a", "REG_SZ", "NOTEPAD.EXE")
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 19:36
par theAvenger
Ce sont des clé à rajouter ? Oui j'ai compris, je crois. Elles servent à dire à l'explorateur windows comment l'exécuter, c'est ça ?
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 20:25
par mikell
Yes
Et si tu veux le faire tip-top, tu crées une entrée "Nouveau" dans le menu contextuel du bureau
(Nouveau => Tagada File) avec son icone
ça te crée sur le bureau un "Nouveau Tagada File.tagada"
Voilà le reg modifié
► Afficher le texte
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.tagada]
@="tsointsoin"
[HKEY_CLASSES_ROOT\.tagada\tsointsoin]
[HKEY_CLASSES_ROOT\.tagada\tsointsoin\ShellNew]
@=""
"NullFile"=""
[HKEY_CLASSES_ROOT\tsointsoin]
@="Tagada File"
[HKEY_CLASSES_ROOT\tsointsoin\DefaultIcon]
@="C:\\WINDOWS\\icons\\crane.ico,0"
[HKEY_CLASSES_ROOT\tsointsoin\shell]
[HKEY_CLASSES_ROOT\tsointsoin\shell\open]
[HKEY_CLASSES_ROOT\tsointsoin\shell\open\command]
@="%SystemRoot%\system32\NOTEPAD.EXE %1"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tagada]
"Application"="NOTEPAD.EXE"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tagada\OpenWithList]
"a"="NOTEPAD.EXE"
et voilà le code autoit complet
► Afficher le texte
Code : Tout sélectionner
RegWrite("HKEY_CLASSES_ROOT\.tagada", "", "REG_SZ", "tsointsoin")
RegWrite("HKEY_CLASSES_ROOT\.tagada\tsointsoin")
RegWrite("HKEY_CLASSES_ROOT\.tagada\tsointsoin\ShellNew", "NullFile", "REG_SZ", "")
RegWrite("HKEY_CLASSES_ROOT\tsointsoin", "", "REG_SZ", "Tagada File")
RegWrite("HKEY_CLASSES_ROOT\tsointsoin\DefaultIcon", "", "REG_SZ", "C:\\WINDOWS\\icons\\crane.ico,0")
RegWrite("HKEY_CLASSES_ROOT\tsointsoin\shell", "", "REG_SZ", "tsointsoin")
RegWrite("HKEY_CLASSES_ROOT\tsointsoin\shell\open")
RegWrite("HKEY_CLASSES_ROOT\tsointsoin\shell\open\command", "", "REG_SZ", "%SystemRoot%\system32\NOTEPAD.EXE %1")
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tagada", "Application", "REG_SZ", "NOTEPAD.EXE")
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tagada\OpenWithList", "a", "REG_SZ", "NOTEPAD.EXE")
Là-dedans, tu n'as à changer que le chemin de l'icone et l'executable pour la commande open

Note : il faut redémarrer explorer.exe pour que les modifs soient prises en compte, avec par exemple
Code : Tout sélectionner
ProcessClose("explorer.exe")
Sleep(2000)
Run("explorer.exe")
Exit
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 21:10
par theAvenger
J'ai compris !! Merci beaucoup !!!!
Cependant, si on arrête explorer.exe, la barre des tâches, le menu démarrer, le bureau ou les dossiers ouverts ne vont pas se fermer ?
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 21:14
par TT22
theAvenger a écrit :Cependant, si on arrête explorer.exe, la barre des tâches, le menu démarrer, le bureau ou les dossiers ouverts ne vont pas se fermer ?
Pour le savoir, tu devrais essayer (si tu ne veux pas tester, sache que oui ça ferme tout

).
Re: [..] Définir l'icône d'un fichier.
Posté : jeu. 20 oct. 2011 21:19
par theAvenger
J'ai testé, et effectivement, ça a tout fermé

.
Il suffira de mettre un choix avec une msgbox ou de dire à l'utilisateur que "Les changements ne prendront effets qu'à la prochaine ouverture de session."
Merci de votre aide, le sujet est résolu !!
Re: [R] Définir l'icône d'un fichier.
Posté : ven. 21 oct. 2011 14:31
par mikell
Notes
- Tout ça est bon pour XP, mais probablement à adapter pour win7
- Si tu fermes explorer et le relances, les dossiers ouverts n'y sont plus mais tu dois retrouver un bureau avec icones, barre des taches, menu démarrer etc
- Plus de fonctionnalités possibles à voir
ici et
là

Re: [R] Définir l'icône d'un fichier.
Posté : ven. 21 oct. 2011 21:28
par theAvenger
Merci beaucoup !!
Re: [R] Définir l'icône d'un fichier.
Posté : dim. 23 oct. 2011 22:29
par theAvenger
Il y a la fonction EnvUpdate() qui permet de faire comme si on se déconnectait, reconnectait. Elle évite donc d'arrêter le processus "explorer.exe".