PureIconManager version 1.00 bêta 1
Permet de visualiser et sauvegarder les icônes des fichiers exe, dll, icl, cpl, ocx, et scr.

Le , par comtois, Responsable Purebasic
Denis Labarre (c'est aussi l'auteur du magnifique wrapper de GDI+ et de la doc en français) nous a pondu un nouvel utilitaire avec PureBasic, voici la présentation qu'il en fait :

Voilà, je travaille sur ce projet depuis presque 2 ans avec des arrêts et reprises.

Je donne des explications ici car je n'ai pas fait la doc pour l'instant.

PureIconManager n'est pas un éditeur d'icônes au sens d'ouvrir une icône et de la modifier. Il permet de visualiser les icônes et d'en faire des sauvegardes partielles ou complètes dans le format de son choix.
J'utiliserais peut-être l'abréviation PIM pour désigner PureIconManager.

PIM est gratuit pour le moment, vous l'utilisez à vos risques et périls mais en extractions d'icônes, il n'y a pas vraiment de risques.

Le fichier est ici

OS : A partir de Windows XP SP1

Les droits administrateur: La version est compilé avec la nécessité d'avoir les droits administrateurs car on peut créer des fichiers n'importe où.

Les limites :
Certains événements ne sont pas encore pris en compte comme le changement de thèmes (WM_THEMECHANGED), le changement de Langue (si on décide de passer windows dans une autre langue). Depuis Vista, on ne peut pas toujours supprimer des éléments en ressource dans une fichier (cas des icônes du format PE) du fait des limites des fichiers .ln et .mui, voir les remarques ici :
http://msdn.microsoft.com/en-us/libr...49(VS.85).aspx)

Il y a peu d'infos sur les icônes, voici quelques sites dont ma base de travail sur le format NE

http://www.codeproject.com/KB/cs/IconLib.aspx

Les seules infos Microsoft disponibles (télécharger l'exe et décompiler)
http://msdn.microsoft.com/en-us/library/ms997538.aspx

Le format PE en général
http://benoit.papillault.free.fr/c/disc2/exefmt.txt
http://www.itee.uq.edu.au/~csmweb/decom ... w_exe.html

Les icônes XP
http://msdn.microsoft.com/fr-fr/library/ms997636.aspx

PureIconManager v1.00 beta 1 permet :
de visualiser les icônes des fichiers ico, des formats PE (format Windows 32 bits) exe, dll, icl, cpl, ocx, scr, des formats NE (format Windows 16 bits ) exe, icl et dll (faut que je controle pour les dll).

PureIconManager v1.00 beta supporte tous les formats d'icônes carrés (honnêtement je ne sais pas ce que ça donne avec des icônes non carrés mais ça causera des problèmes, c'est sur ma Todo list) du monochrome au format Vista compressé, j'ai encore un petit soucis d'affichage pour certaines icônes compressées Vista sans couche alpha. Les noms de groupes sont supportés pour les fichiers Icl s'ils existent.

La fenêtre est séparée en 4 zones qui sont modifiables grâce aux splitterGadget de Srod (Voir le lien sur sa lib opensource dans la fenêtre A propos de). Excellente lib, bien écrite, tests fait correctement, jamais de plantage!

- En haut à gauche, une ExplorerTreegadget qui sert à sélectionner le dossier courant d'affichage.

-En haut à droite, un ExploreListGadget qui n'affiche que des fichiers en fonction du filtre de types de fichiers (combobox située au-dessus de l'ExplorerTreegadget)
Dès que l'on change de dossier soit via l'ExplorerTreegadget soit via la combobox des récents (située au-dessus de l'ExploreListGadget).

- En bas à gauche, une ListiconGadget affichant les groupes d'icônes. Tous les formats sauf les .ico comportent (si le fichier suit les règles Microsoft) des groupes d'icônes et chaque groupe comporte une ou des icônes. Pour être homogène, j'ai traité les .ico comme s'il avaient des groupes, en fait chaque icône est alors un groupe, ce qui fait que l'on aura jamais chez les .ico des groupes comprenant plus d'une icône. L'affichage de l'icône qui représente le groupe est une des icônes du groupe car les groupes n'ont pas à proprement parler d'icônes les représentant. J'utilise des règles (plus grande taille avec meilleur définition etc.) pour afficher cette icône qui "représente le groupe ".
Pour l'instant c'est figé à 48 x 48 pixels.
Si un nom de groupe existe, il est affichée sous le groupe, sinon c'est sa position dans la liste qui est affichée précédé d'un #
Au-dessus de cette ListiconGadget, il y a une Rebar qui affiche le nombre de groupe sélectionné ainsi que le nombre total des icônes de ces groupes sélectionnés.

- En bas à droite, Un ScrollAreaGadget qui affiche l'ensemble des icônes du groupe sélectionné ou si plusieurs groupes sont sélectionnés, les icônes affichées seront ceux du 1er groupe sélectionné.

Les raccourcis claviers :
CTRL A pour sélectionné/désélectionner les groupes d'icônes (ListiconGadget des groupes d'icônes) ou les icônes ( ScrollAreaGadget) en fonction du focus.

CTRL T (toogle) pour inverser la sélection courante des groupes d'icônes (ListiconGadget des groupes d'icônes) ou des icônes ( ScrollAreaGadget) en fonction du focus.

Pour CTRL A et CTRL T, il faut absolument relacher les deux touches pour refaire l'action (sinon j'avais pas un bel affichage du ScrollAreaGadget, comme il se désactive/réactive à l'affichage pour gagner du temps, on a à ce moment là un transition grise qui m'énerve un peu, alors j'ai contourné le problème).

Touche Escape pour désélectionner les groupes d'icônes (ListiconGadget des groupes d'icônes) ou les icônes ( ScrollAreaGadget) en fonction du focus.

La touche supprimer n'est pas encore prise en compte.

Pour la ListiconGadget des groupes et le ScrollAreaGadget, on peut sélectionner en maintenant la touche majuscule enfoncée et en utilisant les flèches haut et bas (ScrollAreaGadget) et les flèches haut, bas, droite et gauche pour la ListiconGadget. Pour le scrollArea, j'ai fixé les règles en fonction de l'image qui a le focus (en fait c'est un pseudo focus que j'ai créé).

Pour le scrollArea on peut se déplacer d'image en image avec les flèches haut et bas à partir du moment ou une image est sélectionnée.

Clavier et souris :
Multi sélection possible dans la ListiconGadget et le ScrollAreaGadget dès lors qu'une image ou plusieurs sont sélectionnées, en maintenant appuyé la touche Majuscule (Shift Gauche ou Droite) et en cliquant sur une image.

Tout ce que je viens de dire pour la sélection sur la ListiconGadget est natif, j'ai tout codé pour le ScrollAreaGadget.

Dans le scrollArea, Une image peut avoir le pseudo focus, elle est entourée par un rectangle pointillée.

Les sauvegardes :
Sur la ListiconGadget ou sur le ScrollAreaGadget, on le même menu (mais avec des couleurs différentes) qui permet de tout sélectionner/déselectionner ou inverser la sélection.

Pour sauvegarder, il faut que soit des groupes soient sélectionnés et que la ListiconGadget ait le focus (les sélections sont en bleu mais ça dépend des thèmes) ou que des icônes du ScrollAreaGadget soient sélectionnées, un clic droit sur le bouton de la souris et le menu apparait.

On peut sauvegarder la sélection au format ico, dll PE (32 bit) ou Icl PE (32 bits) en ayant le choix de décompresser ou non les icônes au format compressé Vista.

Les dll créées ne comportent pas de code exécutable, c'est donc une Dll vide qui ne contient que des icônes. C'est la même chose que les Icl qui ne sont rien d'autre que des Dll vides avec des icônes.
Par contre, les Icl peuvent comporter des noms de groupes que PIM supporte à la lecture et à la création des ICL. Pour l'instant, on copie les noms de groupes, pas d'autre choix.

Suppressions d'icônes :
Pour le format ico, pas de problèmes mais rien n'est fait pour les exe, dll (format PE) car je rencontre des problèmes (assez étrange sous Seven) avec l'API LoadLibraryEx, je suis dessus mais c'est galère .

Il y a des préférences pour l'affichage ou non de fenêtre à la création/suppressions d'icônes que l'on peut gérer par le bouton sur la barre d'outils (le 4ème en partant de la fin, dossier avec des engrenages). Idem lorsque le fichier ne présente pas d'icônes, ce n'est pas forcément une erreur, alors je peux ou non afficher une fenêtre indiquant cela.
De même les fichiers créés peuvent être affichés en lieu et place de celui qui a permis de le créer.
On peut aussi sélectionner le nombre de dossier récents de la combobox.

Les boutons grisés ne fonctionnent pas encore et le bouton enregistre non plus.

Les Langues :
PIM supporte le français et l'anglais, la sélection est faite par programmes, tous les mots utilisés dans chaque langue sont déclarés en ressource.

Les erreurs :
PIM gère environ une centaine d'erreurs, celles-ci sont déclarées en ressource.
Plusieurs erreurs sont fatales, mais ce n'est vrai qu'à l'ouverture de PIM.
Une erreur importante qu'il faut me reporter c'est une erreur dite "interne" qui dépend du contexte, c'est en général un cas qui ne devrait pas arriver, mais rien n'est simple en ce bas monde.

Les problèmes importants rencontrés avec la programmation :

PB souffre malgré les .a et .c, d'un manque de gestion des long non signés. Pour moi c'est un handicap majeur.

L'explorerListGadget est lent, on a pas accès à des événement du type 'PB_ExplorerList_UpDate_Done' indiquant qu'il s'est mis à jour et que l'on peut travailler dessus. Faute de mieux, j'ai mis des While windowevent()/wend mais je ne sais pas quels sont les événement perdus.

Les problèmes de gestion de mémoire, tous les problèmes étaient de ma faute. On s'en sort bien avec le code mis à la disposition sur le blog PB.

Voici quelques aperçus sous Seven:

Le format du fichier est NE avec noms de groupes affichés sous chaque groupe


Fichier NE avec icônes Vista (Axialis IconWorkShop n'ouvre pas correctement ce fichier)


Fichier ico avec popupMenu sur le ScrollareaGadget (1 icône est sélectionnée)


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de comtois comtois - Responsable Purebasic https://www.developpez.com
le 29/12/2009 à 20:24
Denis vient de sortir une nouvelle beta de son utilitaire :

Voici une nouvelle beta ici

Les anciennes versions ne sont plus disponibles.

- Changement : ExplorerTreeGadget garde le focus lorsque un dossier est sélectionné avec la souris (au lieu de donner le focus à l'ExplorerListGadget).
- Corrigé : un problème d'affichage avec les nxgadget.
- Corrigé : Le format d'affichage des icônes vista de faible résolution.
- Ajouté : checkbox pour sélectionné le langage par défaut (automatique, français, anglais).
- Ajouté : Une seule instance de PIM peut être exécutée (pas de choix possible).
- Ajouté : Le bouton 'Enregistrer' de la Toolbar fonctionne (popumenu affiché avec la flèche).

Pour infos:
Rien n'est écrit dans le registre, PIM ne crée qu'un fichier préférences (Dossier$ = GetEnvironmentVariable("APPDATA") avec le dossier "PureIconManger" ajouté, fichier : PureIconManger.prefs).
J'ai oublié d'indiquer que l'on peut sélectionner une ou plusieurs icônes avec la touche CTRL enfoncée (la maintenir enfoncée) et avec la souris, on clique sur une image une ou plusieurs fois (multi-sélection possible, que les images soient contigües ou non).

TodoLIst :
- Opérations de suppression d'icônes des fichiers (j'ai toujours des problèmes avec les exe/dll)
- Réduction de la taille des fichiers (ico, dll etc) créés en utilisant les procédures de netmaestro adaptée à PIM (viewtopic.php?f=12&t=39485)
- Utilisation de stream pour les conversions internes des formats PE/NE au lieu d'allocations mémoire.
- Support des fichiers exe compressés.
- Conversion automatique des fichiers par lot (déjà écrit mais je dois encore tester mon code).
- Simplifier le code.
- Ecrire des fonctions en assembleur pour améliorer la vitesse (juste pour celles qui sont beaucoup utilisées)
- Plein de petites modifs...
Offres d'emploi IT
Ingénieur analyste programmeur (H/F)
Safran - Auvergne - Montluçon (03100)
Expert décisionnel business intelligence H/F
Safran - Ile de France - Évry (91090)
Architecte et intégrateur scade/simulink H/F
Safran - Ile de France - Vélizy-Villacoublay (78140)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique PureBasic : comtois -