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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#1

Message 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.
Modifié en dernier par TommyDDR le ven. 28 janv. 2011 10:29, modifié 1 fois.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
mimione
Niveau 4
Niveau 4
Messages : 91
Enregistré le : mer. 30 avr. 2008 18:11
Localisation : Bretagne
Status : Hors ligne

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

#2

Message 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).
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#3

Message 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().
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#4

Message 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:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#5

Message 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.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#6

Message par Tlem »

Les exemples fournit ici ne vous suffise pas ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#7

Message 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
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#8

Message 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")
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#9

Message 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.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#10

Message 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.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#11

Message par Tlem »

Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#12

Message 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.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

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

#13

Message par TommyDDR »

Je rajoute une fonction, celle pour extraire une icone d'un exe.
► Afficher le texte
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Répondre