Précédent   Forums CustomXP > CustomXP > Tutoriels
Tutoriels
Forum dédié aux tutoriels de CustomXP.net

Réponse
#1
Vieux 27/06/2006, 13h52
L'édition de DLL
Anti-trust
Z'avez pas vu Cortex ?
Avatar de Anti-trust
Ultimate
Date d'inscription : décembre 2002
Messages : 11 004
Anti-trust est déconnecté
Partie 1 Présentation
Partie 2 L'édition avec reshack
Partie 3 Le remplacement des fichiers
Dernière modification par Lefreut ; 12/02/2007 à 00h22.

Réponse avec citation Haut de page
#2
Vieux 27/06/2006, 14h04
L'édition de dll : Présentation
Anti-trust
Z'avez pas vu Cortex ?
Avatar de Anti-trust
Ultimate
Date d'inscription : décembre 2002
Messages : 11 004
Anti-trust est déconnecté
Avant propos
Ce dossier va vous présenter comment modifier quasiment toutes les icônes de l'interface de Windows XP sans utiliser de logiciels tiers comme MicroAngelo ou Axialis IconworkShop. Pour ce faire, des modifications vont être appliquées à certains fichiers systèmes, et ce non sans risque. L'équipe de CustomXP décline donc toutes responsabilités dans l'éventualité de mauvaises manipulations de votre part, provoquant une dégradation de votre système.
Introduction
Comme tout bon customiser qui se respecte, vous souhaitez pouvoir modifier votre interface de travail, et ce jusque dans les moindres recoins. Pour arriver à une uniformité de votre thème, vous avez sûrement installé et utilisé des logiciels vous permettant de modifier les icônes de vos lecteurs, répertoires et autres menus de XP. Mais cette façon de procéder présente plusieurs inconvénients.

Tout d'abord, comme précédemment indiqué, vous devez installer un, voir plusieurs logiciels pour modifier un maximum d'icône, ces logiciels étant souvent payants. Ensuite, vous n'êtes pas à l'abri d'un plantage sérieux vous obligeant à formater, et le cas échéant à refaire toute vos modifications, ce qui demande souvent pas mal de temps !
Pour terminer, aucun de ces softs ne vous permettra de changer toutes les icônes, dans toutes les circonstances ( certaines fenêtres comme "ouvrir", "enregistrer", "parcourir", etc...conservent les anciennes icônes ).

Pour compenser toutes ces lacunes, il existe une solution un peu moins pratique, mais bien plus efficace, l'édition des dll et le remplacement des icônes qu'elles contiennent.

Un peu de technique
Pour tout ceux qui ne le sauraient pas, les fichiers *.dll (Dynamic Linked Library) servent entre autre à emmagasiner des icônes afin de n'avoir qu'un fichier à exploiter. Comme pour toute librairie, les éléments ( en l'occurrence les icônes ) sont identifiées par un numéro d'index, auquel fait appel le code exécuté par votre OS.
Ainsi, pour shell32.dll par exemple, si le code fait appel à l'icône des dossiers, il pointera vers "C:\windows\system32\shell32.dll,4", ou 4 est le numéro d'index de l'icône des dossiers.

Ce que nous vous proposons ici est d'éditer la dll voulue grâce à un petit soft dédié, et remplacer la ressource (ici une icône) par une autre plus à votre goût. Une fois le remplacement fait, il ne restera plus qu'a remplacer la dll d'origine par la dll modifiée dans Windows, et votre interface sera personnalisée.

Préparatifs
Pour effectuer les manipulations, voici tout d'abord ce dont vous allez avoir besoin :

- En premier lieu, l'éditeur de dll. Le plus connu d'entre eux est resource hacker (ou ResHack).


- Ensuite, les dll à modifier. Pour changer une bonne partie des icônes de l'interface, l'édition de shell32.dll est suffisante, mais rien n'oblige à s'y limiter. Pour ce dossier nous utiliserons cette dll.
- Un répertoire de travail temporaire dans lequel vous copierez shell32.dll ( vous la trouverez dans c:\windows\system32 )
- Pour un petit contrôle, nous vous conseillons d'utiliser un éditeur d'icônes comme Microangelo ou Axialis Iconworkshop. Il vous permettra de visualiser l'ensemble des icônes contenues dans la dll.
- Pour finir, ils vous faut bien évidement de nouvelles icônes de remplacement.

Dernière modification par bubka ; 25/04/2009 à 14h14.

Réponse avec citation Haut de page
#3
Vieux 27/06/2006, 14h20
L'édition avec reshack
Anti-trust
Z'avez pas vu Cortex ?
Avatar de Anti-trust
Ultimate
Date d'inscription : décembre 2002
Messages : 11 004
Anti-trust est déconnecté
Vous allez voir ici comment remplacer une icône contenue dans une dll avec reshack. Mais avant toute chose, un petit point technique sur la structure des fichiers icône ( .ico ) et des dll est nécessaire.

Le fichier .ico
Le fichier ico peut être assimilé à un conteneur. En effet, de part la nécessité d'afficher une même icône dans différents formats ( taille et profondeur de couleur ) en fonction de la zone de l'interface, le fichier ico intègre plusieurs instances de la même image. Les instances sont définies en fonction de leur taille ( 16x16, 24x24, 48x48 pixels, etc ... ) et par le nombre de couleurs utilisées ( 16, 256, ou 32bits + couche alpha pour la transparence ).

Lorsque par exemple vous ouvrez une icône avec un éditeur dédié comme iconworkshop, celui ci affiche systématiquement l'ensemble des instances de taille et couleur sous forme de liste. Vous êtes ensuite libre de modifier l'instance de votre choix, sans que cela n'impacte le reste des instances. Au delà de la taille et des couleurs, chaque instance est donc indépendante et peut être constituée d'image différente.
Evidement, il y a peu d'intérêt à utiliser un fichier ico dont les instances seraient complètement différentes.

Sachez que sous XP, ce sont majoritairement les instances en 16 millions de couleurs/32bits alpha qui sont utilisées par le shell ( notamment pour les raccourcis, grosses icônes, panneau de config, etc ... ) mais que les icônes en 16 et 256 couleurs sont toujours d'actualité. En effet, ces formats ne permettant pourtant pas un bon rendu visuel sont utilisés pour toutes les petites icônes disséminées par ci par la dans l'interface et dont la présence visuelle est limitée.

Le fichier DLL
Passons aux librairies dynamiques maintenant, plus communément appelées Dll.
Outre leur fonction au sein du système que nous ne développerons pas ici, ces fichiers emmagasinent donc des ressources graphiques diverses comme des fichiers bmp, png, avi, ico, cur, etc ... Ces ressources pouvant bien évidement être modifiées. La structure d'une dll est toujours la même et quelque soit l'éditeur de ressource que vous utiliserez, la présentation des ressources sera identique, en l'occurrence sous forme d'arborescence.

Généralement, chaque type de ressource a sa propre branche dans l'arborescence sous la forme d'un sous répertoire nommé suivant le type de ressource. Ainsi, vous trouverez très régulièrement un sous répertoire bitmap, cur ou encore AVI. Quand aux icônes, la structure peut être légerement différente.
Comme indiqué plus haut, les icônes intègrent plusieurs instances. Les Dll intègrent donc une branche détaillant l'ensemble des fichiers ico embarqués mais également une branche détaillant la liste de toutes les instances de tous les fichiers ico. Cette double structure permet au système d'identifier facilement l'instance à utiliser en fonction de la zone qui va afficher l'icône.
La branche dédié au type "icônes complètes" se nomme Icon Group et la branche dédiée au type des instances Icon.

Pour chaque ressource appartenant à une branche de type, un sous répertoire portant le nom de la ressource existe ( souvent un nombre ), contenant lui même une ligne nommée 1036 correspondant au langage.


Dernière chose concernant les ressources de type icône, lorsque vous déroulerez et afficherez sous reshack une ressource de type Icon group (voir le 2nd screen juste au dessus ), vous pourrez voir s'afficher dans le volet de droite l'ensemble des instances de l'icône, alors que l'affichage d'une ressource de la branche Icon ne permettra d'afficher que l'instance désignée.
Information: Même si une dll contient un nombre d'icône et d'instance donné, vous pouvez sans problème utiliser des icônes de remplacement intégrant moins d'instances de taille et de couleur. Il est tout de même fortement conseillé de conserver les instances de taille d'origine. En effet, si une instance de 16x16 est censée être appelée par le système, utiliser une icône de remplacement ne contenant pas cette taille risque de poser problème.
Utiliser Reshack
Passons à l'édition à proprement parlé maintenant. Lancez reshack et ouvrez votre copie de shell32 depuis votre répertoire de travail.

Comme indiqué plus haut, vous allez constater la présence de l'arborescence des ressources dans le volet de gauche, celui de droite étant vide. Ce même volet de droite ne sert qu'a afficher la ressource lorsque vous cliquerez sur une ligne 1036 du volet de gauche.
Déroulez la branche Icon group sur la ressource de votre choix ( pour l'exemple, la numéro 5 correspondant à l'icône des dossiers ) et cliquez sur 1036. Vous voyez donc apparaître à droite toutes les instances contenues dans l'icône n° 5, ainsi que le détail des tailles et nombre de couleur. L'info Ordinal name correspondant aux noms des différents sous répertoires d'instances de la branche Icon constituant la ressource Icon Group 5.

Voici la marche à suivre pour remplacer la ressource 5:
Clic droit sur la ligne 1036 de 5
Cliquez sur Replace resource...
Dans la nouvelle fenêtre, cliquez sur Open file with new icon...
Sélectionnez votre icône de remplacement depuis votre rép. de travail
Cliquez sur Replace
Votre icône a été automatiquement modifiée dans reshack, vous pouvez le voir dans le volet de droite.
Il ne vous reste plus qu'a sauvegarder votre dll en cliquant sur le menu File puis Save. Comme toujours sous reshack, la dll ouverte est dupliquée lors de la sauvegarde afin de conserver une version d'origine en cas de problème. Pensez à conserver soigneusement cette copie.

Une dernière petite chose concernant les instances :
Si votre icône de remplacement contient moins d'instance que l'icône remplacée, vous constaterez que le contenu de la branche Icon a été mis à jour lors du remplacement. Sachant qu'un répertoire de Icon correspond à une instance, le nombre total de rép. de Icon aura diminué d'autant qu'il y a d'instance en moins dans votre icône de remplacement.
Information: Vous pouvez effectuer l'opération de remplacement sous reshack autant de fois que vous voulez avant de sauvegarder via le menu File.
Petite vérification
Si vous le souhaitez, vous pouvez contrôler votre dll modifiée à l'aide de Axialis iconworkshop ou Microangelo. En effet, ces deux éditeurs sont capables d'ouvrir les fichier dll et d'afficher toutes les icônes qu'ils contiennent.
Voici le contenu de shell32 d'origine et d'une shell32 modifiée avec les icônes Gorilla :

Dernière modification par bubka ; 25/04/2009 à 14h15.

Réponse avec citation Haut de page
#4
Vieux 12/02/2007, 00h10
Le remplacement des fichiers
Lefreut
-
Avatar de Lefreut
Team CustomXP.net
Date d'inscription : août 2003
Messages : 5 816
Lefreut est déconnecté
Dernière étape, le remplacement du ou des fichiers en cours d'utilisation par celui ou ceux que vous venez de modifier.

Remplacement à la main
Méthode pratique tant que vous n'avez qu'à remplacer un ou deux fichiers, mais qui devient un enfer quand vous avez 30 fichiers à remplacer.

Première chose, il faut savoir que XP intègre un système de vérification des fichiers systèmes qui fonctionne en temps réel. De même, une dll comme shell32 sera systématiquement en cours d'utilisation par votre système ce qui vous empêchera ( de prime abord ) de faire quelques manipulations que ce soit sur le fichier.

Pour le problème du système de vérification des fichiers systèmes
- Soit vous effectuez les manipulations qui vont suivre en mode normal, et dans ce cas une fenêtre de warning viendra vous embêter. Il faudra dans ce cas décliner la proposition de Windows de restaurer les fichiers qui viennent d'être modifiés et confirmer juste derrière.

- Soit vous opérez en mode sans échec. Il vous suffit de presser F8 au démarrage pour démarrer sur ce mode.
Ensuite, pour faire le remplacement en lui même, voici la marche à suivre :
Ouvrez le répertoire contenant votre dll de remplacement et copiez le fichier en mémoire ( ctrl + c )
Ouvrez ensuite le répertoire système contenant le fichier d'origine, le plus souvent c:\windows\system32\
Changez le nom du fichier d'origine en pressant F2 et renommez le avec l'extension .bak
Copiez votre fichier modifié qui est en mémoire dans le même répertoire ( ctrl + v )

Il faut maintenant supprimer les doublons du fichier utilisés par la restauration du système dans les répertoires suivants :
c:\windows\system32\dllcache
c:\windows\servicepackfiles\i386


Et y copier votre dll modifiée avec ctrl + v par exemple.
Pourquoi remplacer également le fichiers dans ces deux répertoires ? tout simplement car si windows essaie de restaurer le fichier au redémarrage après avoir identifié que celui de system32 est modifié, il utilisera une des copies présentes dans l'un de ces deux répertoires complémentaires. Ainsi, en ayant modifié également les copies de sauvegarde, même si le fichier est restauré, la version utilisée pour la restauration sera bien celle modifiée par vos soins.

Evidement, les modifications ne seront visibles qu'une fois votre machine redémarrée.
Information: Il se peut que certaines icônes n'aient pas changé même après avoir redémarré. C'est dans ce cas le cache d'icône, sorte de mémoire vive tampon qui vous joue des tours. Utilisez par exemple IconToolz pour reconstruire le cache d'icône, vos icônes modifiées apparaîtront alors.


Utiliser un script de remplacement
La modification des fichiers systèmes ayant fait énormément d'émules au sein de la communauté des customiseurs, certains membres ont créé des scripts de remplacement automatique permettant de s'affranchir de toutes ces manipulations et de ne pas être dérangé par la protection des fichiers systèmes de XP.

Vous pouvez donc utiliser Replacer ou bien ReplaceIt tout deux dédiés au remplacement "en live" des fichiers systèmes par simple glisser/déposer.
Pour vous en servir, faites comme suit :
Dézippez le script dans un répertoire temporaire
Lancez rep.bat pour replaceit ou replacer.cmd pour Replacer
Attrapez le fichier modifié à remplacer et glissez le sur la fenêtre du script et validez
Ensuite, suivez le reste des instructions du script
Pour terminer, redémarrez votre machine.

Utiliser LockedCopy
Bricomix, ex-membre de CustomXP.net a mit au point un petit logiciel de remplacement très pratique car complètement interfacé, il s'agit de LockedCopy.



Récupérez le fichier, installez le logiciel et lancez le. L'interface se résume uniquement à une fenêtre dont il va falloir renseigner les champs :
Dans le premier champs, sélectionnez le fichier modifié à utiliser ( ici shell32.dll dans votre rép. de travail )
Spécifiez dans le second champs le répertoire d'origine du fichier ( ici \system32\ )
Cochez Autoriser le remplacement de fichier système
Validez par ok
Si le fichier est protégé par le système, ce qui est le cas pour shell32, le redémarrage du système sera alors automatiquement proposé et le remplacement du fichier effectué lors de la phase de redémarrage de l'OS, avant que le fichier ne soit chargé en mémoire.
Dernière modification par bubka ; 25/04/2009 à 14h15.

Réponse avec citation Haut de page
Réponse
Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion Rechercher
Rechercher:

Recherche avancée
Modes d'affichage



Navigation rapide
Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages
Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : oui

Règles du forum

Powered by vBulletin® Version 3.8.11 - Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Version française #21 par l'association vBulletin francophone - CNIL N°834125