# Function Reference

# _WinAPI_LoadResource

Loads the specified resource into global memory

#include <WinAPIRes.au3>
_WinAPI_LoadResource ( $hInstance, $hResource )

## Parameters

$hInstance | Handle to the module whose executable file contains the resource. If this parameter is 0, the system loads the resource from the module that was used to create the current process.
$hResource | Handle to the resource to be loaded. This handle is returned by the _WinAPI_FindResource() or _WinAPI_FindResourceEx() function.

## Return Value

Success: | Handle to the data associated with the resource.
Failure: | 0, call _WinAPI_GetLastError() to get extended error information.

## Remarks

To obtain a pointer to the resource data, call the _WinAPI_LockResource() function.

## Related

_WinAPI_FindResource, _WinAPI_FindResourceEx, _WinAPI_LockResource

## See Also

Search LoadResource in MSDN Library.

## Example

    #include "Extras\HelpFileInternals.au3"

    #include <GUIConstantsEx.au3>
    #include <Memory.au3>
    #include <StaticConstants.au3>
    #include <WinAPIGdi.au3>
    #include <WinAPIMisc.au3>
    #include <WinAPIRes.au3>

    Local Const $sJpg = @TempDir & '\~Tech.jpg'

    ; Load Resources.dll to memory
    Local $sDll = _Extras_PathFull('Resources.dll')
    Local $hInstance = _WinAPI_LoadLibraryEx($sDll, $LOAD_LIBRARY_AS_DATAFILE)

    ; Load JPEG resource from Resources.dll library
    Local $hResource = _WinAPI_FindResource($hInstance, 'JPEG', 1)
    Local $iSize = _WinAPI_SizeOfResource($hInstance, $hResource)
    Local $hData = _WinAPI_LoadResource($hInstance, $hResource)
    Local $pData = _WinAPI_LockResource($hData)

    ; Save resource to .jpg file
    Local $hFile = FileOpen($sJpg, 2 + 16)
    Local $tData = DllStructCreate('byte[' & $iSize & ']', $pData)
    FileWrite($hFile, DllStructGetData($tData, 1))
    FileClose($hFile)

    ; Load FONT resource from Resources.dll library
    $hResource = _WinAPI_FindResource($hInstance, $RT_FONT, 'TECHNOVIA_CAPS')
    $iSize = _WinAPI_SizeOfResource($hInstance, $hResource)
    $hData = _WinAPI_LoadResource($hInstance, $hResource)
    $pData = _WinAPI_LockResource($hData)

    ; Add font from a memory to the system
    Local $hFont = _WinAPI_AddFontMemResourceEx($pData, $iSize)

    ; Load SOUND resource from Resources.dll library
    $hResource = _WinAPI_FindResource($hInstance, 'SOUND', 1)
    $iSize = _WinAPI_SizeOfResource($hInstance, $hResource)
    $hData = _WinAPI_LoadResource($hInstance, $hResource)
    $pData = _WinAPI_LockResource($hData)

    ; Copy WAV to memory for use later
    Local $hWave = _MemGlobalAlloc($iSize, $GMEM_MOVEABLE)
    Local $pWave = _MemGlobalLock($hWave)
    _MemMoveMemory($pData, $pWave, $iSize)
    ; _MemGlobalUnlock($hWave)

    ; Load STRING resource from Resources.dll library
    Local $sText = _WinAPI_LoadString($hInstance, 1)

    ; Unload Resources.dll from memory
    _WinAPI_FreeLibrary($hInstance)

    ; Create 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)

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case $idButton
                _WinAPI_PlaySound($pWave, BitOR($SND_ASYNC, $SND_MEMORY, $SND_NOWAIT))
        EndSwitch
    WEnd

    ; Free resources
    _WinAPI_RemoveFontMemResourceEx($hFont)
    FileDelete($sJpg)