#Include Opt('MustDeclareVars', 1) Func FileToBinaryFunc($filename,$FuncName,$Outfilename) Local $nBytes Local $hFile = _WinAPI_CreateFile($filename, 2,2) if Not $hFile Then Return -1 Local $tSize = FileGetSize($filename) + 1 Local $DATA = DllStructCreate("byte[" & $tSize & "]") _WinAPI_ReadFile($hFile, DllStructGetPtr($DATA), $tSize, $nBytes) if @error Then _WinAPI_CloseHandle($hFile) return -2 EndIf _WinAPI_CloseHandle($hFile) Local $Binary = String(DllStructGetData($DATA,1)) Local $Len = StringLen($Binary) + 1 Local $TXT = '' $TXT &= 'Func ' & $FuncName & '()' & @CRLF $TXT &= 'Local $TXT = ""' & @CRLF For $i = 1 To $Len Step 90 $TXT &= '$TXT &= "' & StringMid($Binary, $i, 90) & '"' & @CRLF Next $TXT &= 'Return $TXT' & @CRLF $TXT &= 'EndFunc' & @CRLF Local $FileOpen = FileOpen($Outfilename,1) FileWrite($FileOpen,$TXT) FileClose($FileOpen) Return True EndFunc Func BinaryToFile($filename,$BinaryData) Local $FileOpen = FileOpen($filename,2) if @error Then Return -1 FileWrite($FileOpen,Binary($BinaryData)) If @error Then Return - 2 FileClose($FileOpen) Return True EndFunc Func STATIC_SETBITMAP($hWnd,$HandleImage) Local $GWL_STYLE = (-16) , $SS_BITMAP = 0x0000000E , $SS_ICON = 0x00000003 ,$STM_SETIMAGE = 0x0172 If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd) if Not BitAND(_WinAPI_GetWindowLong($hWnd, $GWL_STYLE), $SS_BITMAP) = $SS_BITMAP Then _WinAPI_SetWindowLong($hWnd, $GWL_STYLE, _WinAPI_GetWindowLong($hWnd, $GWL_STYLE) + $SS_BITMAP ) ElseIf BitAND(_WinAPI_GetWindowLong($hWnd, $GWL_STYLE), $SS_ICON) = $SS_ICON Then _WinAPI_SetWindowLong($hWnd, $GWL_STYLE, _WinAPI_GetWindowLong($hWnd, $GWL_STYLE) - $SS_ICON) EndIf Return _SendMessage($hWnd, $STM_SETIMAGE, 0, $HandleImage) EndFunc Func LoadImageFrom_BinaryData($BinaryData , $GDIPlus_ShutDown = True) ; $GDIP_IMAGETYPE_BITMAP - Bitmap types: BMP, PNG, GIF, JPEG, TIFF, ICO, EXIF [Return HBITMAP Handle AND imageobject[Bitmap Handle]] ;$GDIP_IMAGETYPE_METAFILE - Metafile types: EMF, WMF [Return HENHMETAFILE Handle (AND\OR) imageobject] ;$GDIP_IMAGETYPE_UNKNOWN [Return new object] Local $tSize = StringLen($BinaryData) + 1 Local $DATA = DllStructCreate("byte[" & $tSize & "]") DllStructSetData($DATA,1,$BinaryData) Local $uFlags = 0x0002 , $dwBytes = DllStructGetSize($DATA) Local $hMemory = DllCall("Kernel32.dll","hwnd","GlobalAlloc","long",$uFlags,"long",$dwBytes) if @error Then Return -1 Else $hMemory = $hMemory[0] if $hMemory = 0 Then Return -1 EndIf Local $hLock = DllCall("Kernel32.dll","ptr","GlobalLock","hwnd",$hMemory) if @error Then Return -2 Else $hLock = $hLock[0] if $hLock = 0 Then Return -2 EndIf Local $Destination = $hLock , $Source = DllStructGetPtr($DATA), $Length = $dwBytes DllCall("Kernel32.dll","none","RtlMoveMemory","ptr",$Destination,"ptr",$Source,"long",$Length) if @error Then Return -3 EndIf Local $fDeleteOnRelease = True , $Status , $ppstm , $Error Local $Error = DllCall("Ole32.dll","int","CreateStreamOnHGlobal","ptr",$hLock ,"int",$fDeleteOnRelease,"ptr*",0) if @error Then Return -4 Else if Not ($Error[0] = 0) Then Return -4 $ppstm = $Error[3] EndIf Local $gdiplusOpen = DllOpen("gdiplus.dll") Local $ImageType = 0 , $ImageWidth = 0 ,$ImageHeight = 0 , $struct_GdiplusStartupInput , $Input , $LPInput , $VOID _ , $LPVOID_token , $Status , $HBITMAP , $HENHMETAFILE , $GdiPlus_Dll_Hwnd , $GdiPlus_Token $struct_GdiplusStartupInput = _ "int GdiplusVersion;" & _ "int DebugEventCallback;" & _ "int SuppressBackgroundThread;" & _ "int SuppressExternalCodecs;" $Input = DllStructCreate($struct_GdiplusStartupInput) DllStructSetData($Input,"GdiplusVersion",1) DllStructSetData($Input,"DebugEventCallback",0) DllStructSetData($Input,"SuppressBackgroundThread",0) DllStructSetData($Input,"SuppressExternalCodecs",0) $LPInput = DllStructGetPtr($Input) $VOID = DllStructCreate("int") $LPVOID_token = DllStructGetPtr($VOID) $Status = DllCall($gdiplusOpen,"int","GdiplusStartup","ptr",$LPVOID_token,"ptr",$LPInput,"ptr",0) if @error Then Return -5 Else if Not ($Status[0] = 0) Then Return -5 $LPVOID_token = $Status[1] EndIf Local $stream = $ppstm , $image = 0 $Status = DllCall($gdiplusOpen,"int","GdipLoadImageFromStream","ptr",$stream,"int*",$image) if @error Then Return -6 Else if Not ($Status[0] = 0) Then Return -6 $image = $Status[2] EndIf $Status = DllCall($gdiplusOpen,"int","GdipGetImageWidth","hwnd",$image,"int*",0) if Not @error Then if $Status[0] = 0 Then $ImageWidth = $Status[2] EndIf $Status = DllCall($gdiplusOpen,"int","GdipGetImageHeight","hwnd",$image,"int*",0) if Not @error Then if $Status[0] = 0 Then $ImageHeight = $Status[2] EndIf $Status = DllCall($gdiplusOpen,"int","GdipGetImageType","hwnd",$image,"int*",0) if Not @error Then Local $CaseMsg = $Status[2] Select Case $CaseMsg = 0 $ImageType = "ImageTypeUnknown" Case $CaseMsg = 1 $ImageType = "ImageTypeBitmap" $Status = DllCall($gdiplusOpen, "int", "GdipCreateHBITMAPFromBitmap", "hwnd", $image, "int*", 0, "int", 0) if Not @error Then if ($Status[0] = 0) Then $HBITMAP = $Status[2] EndIf Case $CaseMsg = 2 $ImageType = "ImageTypeMetafile" Local $metafile = $image $Status = DllCall($gdiplusOpen,"int","GdipGetHemfFromMetafile","hwnd",$metafile,"int*",0) if Not @error Then if ($Status[0] = 0) Then $HENHMETAFILE = $Status[2] EndIf EndSelect EndIf if $GDIPlus_ShutDown = True Then DllCall($gdiplusOpen,"int","GdiplusShutdown","ptr",$LPVOID_token) DllClose($gdiplusOpen) $GdiPlus_Dll_Hwnd = 0 $GdiPlus_Token = 0 Else $GdiPlus_Dll_Hwnd = $gdiplusOpen $GdiPlus_Token = $LPVOID_token EndIf Dim $ImageArray[2][8] $ImageArray[0][0] = "imageobject" $ImageArray[0][1] = "HBITMAP" $ImageArray[0][2] = "HENHMETAFILE" $ImageArray[0][3] = "ImageType" $ImageArray[0][4] = "ImageWidth" $ImageArray[0][5] = "ImageHeight" $ImageArray[0][6] = "GdiPlus Dll Hwnd " $ImageArray[0][7] = "GdiPlus Token" $ImageArray[1][0] = $image $ImageArray[1][1] = $HBITMAP $ImageArray[1][2] = $HENHMETAFILE $ImageArray[1][3] = $ImageType $ImageArray[1][4] = $ImageWidth $ImageArray[1][5] = $ImageHeight $ImageArray[1][6] = $GdiPlus_Dll_Hwnd $ImageArray[1][7] = $GdiPlus_Token return $ImageArray EndFunc