Retourne la taille, en octets, de la ressource spécifiée
#include <WinAPIRes.au3>
_WinAPI_SizeOfResource ( $hInstance, $hResource )
$hInstance | Handle du module dont le fichier exécutable contient la ressource. |
$hResource | Handle de la ressource. Ce handle doit être créé en utilisant la fonction _WinAPI_FindResource() ou _WinAPI_FindResourceEx(). |
Succès: | Retourne le nombre d'octets de la ressource. |
Échec: | Retourne 0. |
_WinAPI_FindResource, _WinAPI_FindResourceEx
Consultez SizeofResource dans la librairie MSDN.
#include <APIMiscConstants.au3> #include <APIResConstants.au3> #include <GUIConstantsEx.au3> #include <Memory.au3> #include <MsgBoxConstants.au3> #include <StaticConstants.au3> #include <WinAPIGdi.au3> #include <WinAPIMisc.au3> #include <WinAPIRes.au3> Local Const $sJpg = @TempDir & '\~Tech.jpg' ; Charge Resources.dll en mémoire Local $hInstance = _WinAPI_LoadLibraryEx(@ScriptDir & '\Extras\Resources.dll', $LOAD_LIBRARY_AS_DATAFILE) If Not $hInstance Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', @ScriptDir & '\Extras\Resources.dll est absent.') Exit EndIf ; Charge les ressources JPEG de la bibliothèque Resources.dll Local $hResource = _WinAPI_FindResource($hInstance, 'JPEG', 1) Local $iSize = _WinAPI_SizeOfResource($hInstance, $hResource) Local $hData = _WinAPI_LoadResource($hInstance, $hResource) Local $pData = _WinAPI_LockResource($hData) ; Enregistre la ressource du fichier .jpg Local $hFile = FileOpen($sJpg, 2 + 16) Local $tData = DllStructCreate('byte[' & $iSize & ']', $pData) FileWrite($hFile, DllStructGetData($tData, 1)) FileClose($hFile) ; Charge une ressource FONT de la bibliothèque Resources.dll $hResource = _WinAPI_FindResource($hInstance, $RT_FONT, 'TECHNOVIA_CAPS') $iSize = _WinAPI_SizeOfResource($hInstance, $hResource) $hData = _WinAPI_LoadResource($hInstance, $hResource) $pData = _WinAPI_LockResource($hData) ; Ajoute la police en mémoire au système Local $hFont = _WinAPI_AddFontMemResourceEx($pData, $iSize) ; Charge une ressource SOUND de la bibliothèque Resources.dll $hResource = _WinAPI_FindResource($hInstance, 'SOUND', 1) $iSize = _WinAPI_SizeOfResource($hInstance, $hResource) $hData = _WinAPI_LoadResource($hInstance, $hResource) $pData = _WinAPI_LockResource($hData) ; Copie WAV en mémoire pour une utilisation ultérieure Local $hWave = _MemGlobalAlloc($iSize, $GMEM_MOVEABLE) Local $pWave = _MemGlobalLock($hWave) _MemMoveMemory($pData, $pWave, $iSize) ; _MemGlobalUnlock ($HWave) ; Charge une ressource STRING de la bibliothèque Resources.dll Local $sText = _WinAPI_LoadString($hInstance, 1) ; Décharge Resources.dll de la mémoire _WinAPI_FreeLibrary($hInstance) ; Crée une GUI GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 350, 350) GUICtrlCreatePic($sJpg, 0, 0, 350, 350) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateLabel($sText, 10, 18, 330, 36, $SS_CENTER) GUICtrlSetFont(-1, 30, -1, -1, 'Technovia Caps') GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetColor(-1, 0xF06000) Local $idButton = GUICtrlCreateButton('Play Sound', 125, 316, 100, 23) GUISetState(@SW_SHOW) Local $iMsg Do $iMsg = GUIGetMsg() If $iMsg = $idButton Then _WinAPI_PlaySound($pWave, BitOR($SND_ASYNC, $SND_MEMORY, $SND_NOWAIT)) EndIf Until $iMsg = $GUI_EVENT_CLOSE ; Libère les ressources _WinAPI_RemoveFontMemResourceEx($hFont) FileDelete($sJpg)