Une DLL de ressources ne contient aucune fonction ou code d'exécution.
Elle est destinée à ne contenir que des images, sons, videos, fichiers, etc ...
Si le tutoriel ci-dessous vous rebute, vous pouvez aussi utiliser un outil déjà tout fait. Cet outil vous permettra de sélectionner les ressources à ajouter à la DLL, d'en déterminer le nom, etc ... Une fois enregistrée, celle-ci est directement utilisable avec les fonctions adaptées.
Vous trouverez le sujet sur cet outil ici : http://www.autoitscript.fr/forum/viewto ... 501#p11501
*** Edit : Une version plus élaborée existe sur le forum US et de plus il est 100% fait en code AutoIt : ResHacker project
Cette version permet d'éditer et/ou de créer une DLL de ressource par simple Drag&Drop, mais vous pouvez aussi visualiser les ressources d'un Exe !
Pour utiliser les ressources intégrées dans votre DLL (ou une autre DLL de ressources) voir même dans un autre exécutable, cliquez sur ce texte.
* Commençons la partie tutoriel :
Pour créer une dll qui contiendra des ressources, il vous faudra quelques pré-requis.
Ces derniers peuvent être récupérer dans le pack MASM32 (http://www.masm32.com/masmdl.htm),
ou télécharger dans l'exemple joint au post.
Voici les 5 programmes qui vous permettrons de créer vos dll de ressources :
- RC.exe (Microsoft Resource Compiler)
- RCdll.dll (Microsoft Windows Resource Compiler DLL)
- Link.exe (Microsoft (R) Incremental Linker)
- cvtres.exe (Resource File To COFF Object Conversion Utility)
- mspdb50.dll (Microsoft (R) Program Database)
Ensuite, il faut créer le fichier de ressource (Fichier qui liste les ressources à intégrer dans la dll).
Dans un premier temps, ajouter les lignes comme ceci :
Code : Tout sélectionner
NomDeLaRessource TypeDeLaRessource "Nom Du Fichier"
Voici les principaux type de ressource utilisées :
- CURSOR (Fichiers curseur)
ICON (Fichiers icône non compressé)
BITMAP (Fichiers image bitmap)
WAVE (Fichiers son wave)
AVI (Fichiers video avi)
RCDATA (Fichiers divers)
- ACCELERATOR
ANICURSOR
ANIICON
DIALOG
DLGINCLUDE
FONT
FONTDIR
GROUP_CURSOR
GROUP_ICON
HTML
RT_HTML DISCARDABLE
MANIFEST
MENU
MESSAGETABLE
PLUGPLAY
STRING
VERSION
VXD
Cela devrait donner un fichier ressource similaire à ceci (Nous l'appellerons MaDll.rc) :
Code : Tout sélectionner
POINTER CURSOR example.cur
ACCESS ICON example.ico
TOOLBAR BITMAP example.bmp
WHISTLE WAVE example.wav
Il est tout à fait possible de rajouter, un N° de version, un commentaire, un auteur ....
Pour ce faire, rajouter et modifier en conséquence le texte suivant à la suite des ressources,
dans le fichier MaDll.rc :
Code : Tout sélectionner
1 VERSIONINFO
FILEVERSION 0,0,0,1
PRODUCTVERSION 0,0,0,1
FILEOS 0x40004
FILETYPE 0x2
{
BLOCK "StringFileInfo"
{
BLOCK "040C04B0"
{
VALUE "CompanyName", "Ma Compagnie"
VALUE "FileDescription", "Description du fichier"
VALUE "FileVersion", "0,0,0,1"
VALUE "InternalName", "Nom Interne du fichier"
VALUE "LegalCopyright", "Copyright (C) 2007-2008"
VALUE "OriginalFilename", "MaDll.dll"
VALUE "ProductName", "Nom du Produit"
VALUE "ProductVersion", "0,0,0,1"
VALUE "Comments", ""
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x040C 0x04B0
}
}
Placer bien le fichier MaDll.rc et les ressources que vous voulez ajouter dans le même répertoire,
et lancer les commandes suivantes :
Code : Tout sélectionner
RC.exe /r MaDll.rc
Link.exe /nodefaultlib /dll /machine:ix86 /noentry /out:MaDll.dll MaDll.res
Le fichier MaDll.res peut donc être supprimer après la création de la dll.
Et voilà, votre dll est prête à être utilisée avec votre script/logiciel préférer.
Vous trouverez les programmes requis, ainsi qu'un exemple de création d'une dll par un script Batch à la fin du message.
En ce qui concerne l'utilisation de cette dll dans vos scripts, selon la ressource à récupérer, vous pouvez utiliser pour des icônes :
Code : Tout sélectionner
GUICtrlCreateButton ("my picture button", 10,20,40,40, $BS_ICON)
GUICtrlSetImage (-1, "shell32.dll",22)
Ou pour des images format Bitmap, la fonction SetBitmapResourceToPicCtrl écrite dans le code exemple suivant :
http://www.autoitscript.fr/forum/viewto ... f=11&t=513
Voici un exemple d'utilisation pour une image GIF par exemple :