[C] Récupérer des ressources dans une DLL

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
perfaram
Niveau 4
Niveau 4
Messages : 68
Enregistré le : jeu. 28 avr. 2011 11:40
Status : Hors ligne

[C] Récupérer des ressources dans une DLL

#1

Message par perfaram »

Bonjour à tous
J'utilise une DLL de ressources (créée avec l'outil de tlem) avec l'UDF resources.au3
Mais impossible d'utiliser quelconque ressource : j'arrive à les visualiser grâce à ResHacker, mais impossible d'afficher un image (_ResourceGetAsBitmap), ou d'utiliser un STRING (ou un RC_DATA, le résultat est le même).

Je lis et je cherche depuis vendredi, mais je n'ai jamais réussi à utiliser les ressources.
J'ai lu, notamment, sur le forum français :
- http://www.autoitscript.fr/forum/viewto ... f=11&t=310
- http://www.autoitscript.fr/forum/viewto ... 3093#p3093
- http://www.autoitscript.fr/forum/viewto ... 16&start=0
- http://autoitscript.fr/forum/viewtopic.php?f=11&t=1400
Et tout plein d'autres choses sur le fofo US (et même un peu allemand - malgré mon niveau déplorable :oops: )
Mais je n'y arrivant pas, je m'en remet à vous.

A savoir : J'utilise les icônes de la DLL avec l'UDF ITaskBarList.au3 (_ResourceGetAsBitmap), et les textes sont une traduction (_ResourceGetAsString).

Merci d'avance !
LISBON_res.zip
Voici la DLL (dans un ZIP, le forum veut pas des DLLs brutes :P
(10.34 Kio) Téléchargé 83 fois
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récupérer des ressources dans une DLL

#2

Message par Tlem »

Bonsoir.
Visiblement, vous avez lu les bons sujets. Pour ce que vous voulez faire tout est là : http://www.autoitscript.fr/forum/viewto ... 3093#p3093

Vous nous donnez votre dll, mais pas de code, donc difficile de voir ce qui ne va pas ! Essayez de relire le sujet ci-dessus et commencez par tester des choses simples.
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é".
perfaram
Niveau 4
Niveau 4
Messages : 68
Enregistré le : jeu. 28 avr. 2011 11:40
Status : Hors ligne

Re: [..] Récupérer des ressources dans une DLL

#3

Message par perfaram »

Voici mon code :
► Afficher le texteUtilisation de resources.au3
Et si je fais _ArrayDisplay($rsa), mon array est vide :shock:
perfaram
Niveau 4
Niveau 4
Messages : 68
Enregistré le : jeu. 28 avr. 2011 11:40
Status : Hors ligne

Re: [..] Récupérer des ressources dans une DLL

#4

Message par perfaram »

:cry:
Sinon, j'ai lancé un thread sur le fofo US : http://www.autoitscript.com/forum/topic ... urce-dlls/
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récupérer des ressources dans une DLL

#5

Message par Tlem »

Il y a plusieurs problèmes (3 pour être exact) dans ce que vous essayez de faire.

- Pour commencer, le paramètre de la langue $ResLang n'est pas correct. Vous devez fournir une valeur décimale au lieu de @OSLang qui est la représentation de la valeur hexadécimale de ce que vous devez utiliser.

- Ensuite, le nom de la ressource utilisé n'est pas correct. Vous utilisez @OSLang alors que dans votre dll la ressource se nomme @OSLang & "1" soit pour le cas présent 040C1 (voir capture d'écran ci-dessous).
Test Ressource.au3.png
Et pour finir, votre ressource n'est pas enregistré correctement, car vous l'avez bien nommée 040C1 mais la langue utilisée est l'Anglais (1033) au lieu du Français (1036).

Une fois que vous aurez corrigé ces différents éléments, la ligne de commande devrait être :

Code : Tout sélectionner

Global $rst = _ResourceGetAsString(@OSLang & "1", $RT_RCDATA, Dec(@OSLang), @ScriptDir & "\Res\LISBON_res.dll")
Testé et validé. ^^
Si il y a peu de logiciel qui utilisent ce mode de fonctionnement, c'est qu'il y a une raison. La plupart utilisent des fichiers texte avec une structure plus ou moins différente. Fouillez les applis de votre dossier Program Files et vous verrez. ;)
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
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récupérer des ressources dans une DLL

#6

Message par Tlem »

Pas très sympa de prétendre ailleurs d'avoir trouvé la solution et de laisser ce sujet sans réponse et de ne pas le fermer !

Je clos.
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é".
perfaram
Niveau 4
Niveau 4
Messages : 68
Enregistré le : jeu. 28 avr. 2011 11:40
Status : Hors ligne

Re: [C] Récupérer des ressources dans une DLL

#7

Message par perfaram »

@tlem : Je suis désolé, j'ai dû faire une fausse manip' quand j'ai voulu passer en (R).
Dois-je le faire ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [C] Récupérer des ressources dans une DLL

#8

Message par Tlem »

Trop tard puisque j'ai clos le sujet.

Envoyé depuis mon appareil mobile avec Tapatalk.
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é".
Répondre