Page 1 sur 1

[R] Recupérer l'icone d'une ressource

Posté : mer. 26 janv. 2011 17:51
par TommyDDR
Bonjour,
j'aimerais savoir s'il était possible de récupérer l'icone d'une ressource (dll, exe)
et de la sauvegarder dans un fichier.

Merci.

Re: [..] Recupérer l'icone d'une ressource

Posté : mer. 26 janv. 2011 18:46
par mimione
Bonjour

Avec AutoIt, sûrement (on peut TOUT faire avec AutoIt ! ), mais je ne sais pas faire.
Sinon, avec "ResourcesExtract" de l'excellllllente Liberkey, ça le fait. (on peut extraire plein de choses).

Re: [..] Recupérer l'icone d'une ressource

Posté : mer. 26 janv. 2011 18:55
par TommyDDR
Au temps pour moi, je me suis mal exprimé.

Comment extraire une ressource d'une dll, exe, grâce à du code autoit.

J'aimerai pouvoir récupérer dans une variable l'image (ou un pointeur vers celle-ci) pour pouvoir l'utiliser dans un bon vieux FileWrite().

Re: [..] Recupérer l'icone d'une ressource

Posté : mer. 26 janv. 2011 22:17
par Tlem
Étrange, cette question à déjà fait l'objet d'une demande récemment ...
J'y ai indiqué l'utilisation d'un UDF ... :roll:

Re: [..] Recupérer l'icone d'une ressource

Posté : mer. 26 janv. 2011 22:47
par TommyDDR
J'ai en effet jeté un œil (même deux) du coté de "_ResourceGet()"
Mais pas moyens de récupérer une image ou un handle d'image d'une ressource dll ou exe.

:$

Si vous pouviez me donner un exemple comme :

Enregistrer la 1ere icône de shell32.dll dans test.bmp.

Je vous en serai reconnaissant.

Re: [..] Recupérer l'icone d'une ressource

Posté : mer. 26 janv. 2011 23:31
par Tlem
Les exemples fournit ici ne vous suffise pas ?

Re: [..] Recupérer l'icone d'une ressource

Posté : mer. 26 janv. 2011 23:34
par TommyDDR
J'ai essayé de les adaptés mais je ne vois guerre où entrer le chemin de la DLL

J'ai tenté :

Code : Tout sélectionner

_ResourceGet(@SysDir & "\shell32.dll", $RT_ICON, 0, 1)
mais sans succès

Re: [..] Recupérer l'icone d'une ressource

Posté : jeu. 27 janv. 2011 07:57
par Tlem
En reprenant les éléments de l'exemple, cela nous donne :

Code : Tout sélectionner

#include "resources.au3"
#Include <GDIPlus.au3>

$hImage = _ResourceGetAsImage("#14355", $RT_BITMAP, @SystemDir & "\shell32.dll")
_GDIPlus_ImageSaveToFile($hImage, "MonImage.bmp")
_GDIPlus_ImageDispose($hImage)
Autre solution.
Modifiez Resources.au3 et remplacez dans la fonction _ResourceSaveToFile la ligne :

Code : Tout sélectionner

        $hImage = _ResourceGetAsImage($ResName, $ResType)
par

Code : Tout sélectionner

        $hImage = _ResourceGetAsImage($ResName, $ResType, $DLL)
Ensuite ceci suffira dans votre code :

Code : Tout sélectionner

_ResourceSaveToFile("Test2.bmp", "#14355", $RT_BITMAP, 0, 0, @SystemDir & "\shell32.dll")

Re: [..] Recupérer l'icone d'une ressource

Posté : jeu. 27 janv. 2011 10:32
par TommyDDR
En effet, $DLL devait contenir le chemin de la DLL je pensais qu'il servait à dire qu'on utilisait une DLL pour le 1er parametre...

Merci !

(Je fais quelques tests et je passe en résolu si tout se passe bien.)

1) Pas moyen de sauver une icone (BMP : OK, ICO : NON)
2) L'utilisation des #xxx pour choisir l'icone n'est pas assez précis, en effet, pour un exe de windows (pris au hazard dans le dossier system), c'est le #1, pour un exe autoit, c'est le #12

Le GUICtrlSetImage était pourtant parfait, la 1ere icone correspond à l'icone de l'exe (mais la fonction ne permet pas de récupérer quoi que ce soit qui permetterai de sauvegarder l'icon.

Re: [..] Recupérer l'icone d'une ressource

Posté : jeu. 27 janv. 2011 17:07
par TommyDDR
Voila un code de base utilisant la 1ere icone de shell32.dll
► Afficher le texte
J'aimerai qu'a partir de là, je puisse enregistrer l'icone dans un fichier.

Re: [..] Recupérer l'icone d'une ressource

Posté : ven. 28 janv. 2011 00:40
par Tlem

Re: [..] Recupérer l'icone d'une ressource

Posté : ven. 28 janv. 2011 10:35
par TommyDDR
Merci beaucoup pour cette piste Tlem, cela m'a permi d'arranger le code et d'arriver à mes fins.

Voila comment sortir une icone d'une DLL (J'ai coupé la fonction en 2 parties, l'une récupère la donnée et l'autre l'écrit dans le fichier)
► Afficher le texte
Résolu.

Re: [R] Recupérer l'icone d'une ressource

Posté : ven. 28 janv. 2011 11:45
par TommyDDR
Je rajoute une fonction, celle pour extraire une icone d'un exe.
► Afficher le texte