Merci mais cela n'a strictement aucun rapport avec mon sujet...
J'ai fini par y arriver. Si vous souhaitez intégré vos gif ou png dans une dll avec Resource Hacker, vous pouvez utiliser ce code pour les extraire.
Soit en recréant le fichier image dont vous avez besoin de façon temporaire soit en utilisant CatchImage().
Code : Tout sélectionner
Macro MAKEINTRESOURCE(Value)
(Value & $FFFF)
EndMacro
Macro IS_INTRESOURCE(Val)
Bool(Val & ~$FFFF)
EndMacro
#LOAD_LIBRARY_AS_IMAGE_RESOURCE = $20
#LOAD_LIBRARY_AS_DATAFILE = $2
Dim a_ImgResource(1) ; this array will stock the result of GetImagePointerFromResource()
; a_ImgResource(0) = pointer to the image
; a_ImgResource(1) = size of the image
; Load an image (gif, png, ...) from Dll Resource file created with Resource Hacker
; Depending on the destination of the image inside the Dll, Choose a known ResourceType like #RT_RCDATA or a custom one like "PNG"
;
; -- Parameters --
; a_ImgResource(1) : Array containing pointer and size of the image in resource file
; DLL_Path : Path to the Dll Resource file
; Image_Name : Name of the image inside the Dll (defined when you import the file with Resource Hacker)
; ResourceType : Resource Type (https://docs.microsoft.com/en-us/windows/win32/menurc/resource-types)
; CustomResourceTypeName : Custom Name of the resource type (for example : if you import a png with Resource Hacker, it creates a "PNG" resource type)
;
; -- Return --
; 0 if error
; 1 if success and a_ImgResource() filled
Procedure.i GetImagePointerFromResource(Array a_ImgResource(1), DLL_Path.s, Image_Name.s, ResourceType = #RT_RCDATA, CustomResourceTypeName.s = "")
Protected hModule ; dll module handle
Protected hResource ; handle to the specified resource's information block
Protected hData ; handle to the data associated with the resource
Protected *pResource ; pointer to the first byte of the resource
Protected SizeofResource ; number of bytes in the resource
hModule = LoadLibraryEx_(DLL_Path, #Null, #LOAD_LIBRARY_AS_IMAGE_RESOURCE|#LOAD_LIBRARY_AS_DATAFILE)
If hModule = #Null
MessageRequester("Information", "LoadLibraryEx Error")
ProcedureReturn 0
EndIf
If CustomResourceTypeName = ""
hResource = FindResource_(hModule, Image_Name, MAKEINTRESOURCE(ResourceType))
Else
hResource = FindResource_(hModule, Image_Name, CustomResourceTypeName)
EndIf
If hResource = #Null
MessageRequester("Information", "FindResource Error")
ProcedureReturn 0
EndIf
hData = LoadResource_(hModule, hResource)
If hData = #Null
MessageRequester("Information", "LoadResource Error")
ProcedureReturn 0
EndIf
*pResource = LockResource_(hData)
If *pResource = #Null
MessageRequester("Information", "LockResource Error")
ProcedureReturn 0
EndIf
SizeofResource = SizeofResource_(hModule, hResource)
a_ImgResource(0) = *pResource
a_ImgResource(1) = SizeofResource
ProcedureReturn 1
EndProcedure
; Example :
; If GetImagePointerFromResource(a_ImgResource(), "resources.dll", "myGifName")
If GetImagePointerFromResource(a_ImgResource(), "resources.dll", "myPNGName", #RT_RCDATA, "PNG")
; If CreateFile(0,"test.gif")
If CreateFile(0,"test.png")
WriteData(0, a_ImgResource(0), a_ImgResource(1))
CloseFile(0)
Else
MessageRequester("Error", "Could not create file")
EndIf
EndIf