Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

Developpez.com - Delphi
X

Choisissez d'abord la catégorieensuite la rubrique :


Projet ScanResources

Date de publication : 8/10/2002

Par Pierre Castelain
 

Développement d'un programme permettant d'explorer les resources de tous les fichiers d'un dossier et d'extraire celles-ci grâce à ResHacker.


1. Description
2. Principe
3. Téléchargement


1. Description

Dans mon activité professionnelle, il m'arrive fréquemment d'avoir besoin de créer des icônes ou des petites animations (AVI) pour mes applications. Mes aptitudes créatives étant ce qu'elles sont, il m'arrive souvent de m'inspirer d'objets graphiques existants pour réaliser ce que je désire. Il me faut donc un outil permettant d'extraire ces objets graphiques des applications installées sur ma machine.
Après avoir cherché sur le web, je me suis aperçu que les programmes existants étaient soit limités, soit payants. Et franchement, je ne suis pas vraiment d'accord pour payer un petit outil de ce genre. Le seul outil vraiment valable que j'ai trouvé est ResHacker. Celui-ci propose de nombreuses fonctionnalités très intéressantes sauf une : la possibilité de scanner (explorer) l'ensemble des ressources de nombreux fichiers à la fois.
Après quelques minutes de réflexion, j'ai eu l'idée. Pourquoi ne pas faire un outil en Delphi qui scannerait les ressources et qui utiliserait ResHacker pour les manipuler. Aussitôt dit, aussitôt fait. ScanResources est né.


2. Principe

Le principe de fonctionnement de ScanResources est assez simple. Il cherche récursivement tous les fichiers correspondant à un modèle (*.dll par exemple) dans un dossier spécifié. Pour chaque fichier, il énumère toutes les ressources existantes pour un type défini. Cela permet de ne chercher que les AVI par exemple. Le résultat est stocké dans un TreeView. Il est possible par un clic droit de demander l'extraction d'une ressource, de toutes les ressources d'un type, ou de toutes les ressources du fichier. L'extraction est réalisée grâce à ResHacker en utilisant un script.
Attention, pour fonctionner correctement le programme doit être installé dans le même dossier que ResHacker.exe.

Ce programme a quelques défauts, c'est évident. Le premier et le plus important à mes yeux est le TreeView. Celui-ci n'est pas vraiment adapté à ce genre d'application mais je ne voulais pas utiliser de composant autre que ceux de Delphi 5 pour que tout le monde puisse le modifier et le compiler sans problème.
Si vous voulez le modifier pour l'améliorer je suis disposé à vous aider et à maintenir cette page à jour.
Sinon, vous pouvez en faire ce que vous voulez.

Concepts intéressants abordés :

  • Enumération de ressources en utilisant des Hooks.
  • Recherche de fichier récursive avec FindFirst, FindNext et FindClose.
  • Utilisation d'un TreeView (simple).
  • Pilotage d'une application par script (ResHacker).
  • Obtention par le système de fichier et dossier temporaire et suppression de ceux-ci en fin d'application (en un seul appel).
  • Utilisation de l'expert de DLL de ressources pour la localisation.
  • Utilisation des ResourceStrings.
  • Deux ou trois petits trucs supplémentaires.

3. Téléchargement

Pour que le programme fonctionne, vous avez besoin de ResHacker.

Le projet Delphi 5 compressé dans une archive zip (mise à jour du 8/10/2002) : ScanResources.zip


Articles
Delphi 2005 : Découvrez le futur Delphi 2005
DirectX : Introduction à DirectX 9 en Delphi
Variables d'environnement : Présentation, description et utilisation des variables d'environnement sous Windows
Mailslots : Présentation des mailslots et de leur utilisation en Delphi pour la communication inter-processus
Projets complets avec sources
NumericalParser : Parser numérique en Delphi afin de transformer une chaîne de caractères en valeur flottante ou entière.
RegSearch : Composant de recherche dans la base de registre
CDAReader : Lecture des informations contenues dans les fichier CDA de Windows
ScreenSaverPreview : Composant d'affichage de l'aperçu des économiseurs d'écran de Windows
ScanResources : Programme d'exploration des ressources des programmes ou des dll d'un répertoire
ClipboardViewer : Démonstration de la détection des modifications et de l'affichage du contenu du presse-papier
Matrix : Tentative de reproduction en Delphi de l'animation bien connue du film Matrix
Sources et exemples
EMFTransform : Transformation (rotation, inversion, miroir) d'un metafile Windows en mémoire
DeleteKeyTree : Suppression récursive d'un clé de la base de registre
MultiStrings : Routines de gestion de tableaux de chaînes C
GetDllFilename : Pour récupérer le chemin d'une dll par son handle
Extension du shell : Exemple d'extension du menu contextuel du shell de Windows
TriStringGrid : Exemple de tri par colonne d'un composant TStringGrid à l'aide d'un algorithme de tri rapide (quick sort)
XPManifestCPL : Utilisation des contrôles XP dans une application du panneau de configuration (cpl)
Bouboules : Modélisation à l'aide du design pattern Observer
Divers
Diagramme ternaire : Un logiciel gratuit de tracé de diagramme ternaire


Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2002 Pierre Castelain. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Responsables bénévoles de la rubrique Delphi : Gilles Vasseur - Alcatîz -