The following should give a rough idea of what I want to do:
Gui, Add, Picture, hWndBITMAP, C:\Dummy.bmp FileGetSize, dataSz, C:\somefile.jpg FileRead, jpegData, C:\somefile.jpg ; Actually jpegData will be embedded within the script as hextext ; Convert the jpegData to hBitmap ; [color=red]_hBitmap[/color] will be a pointer to converted data SendMessage STM_SETIMAGE, IMAGE_BITMAP, _hBitmap, , ahk_id %BITMAP%
I would appreciate any help... Please.
Edit:
I somewhat understand it might be possible with COM : < External Link >
The following is Module1.bas from the above package:
Attribute VB_Name = "Module1" Option Explicit Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long Private Declare Function OleLoadPicture Lib "olepro32" (pStream As Any, ByVal lSize As Long, ByVal fRunmode As Long, riid As Any, ppvObj As Any) As Long Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpsz As Any, pclsid As Any) As Long Private Declare Function GlobalAlloc Lib "kernel32" (ByVal uFlags As Long, ByVal dwBytes As Long) As Long Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long) Public Function LoadFile(ByVal FileName As String) As Byte() Dim FileNo As Integer, b() As Byte On Error GoTo Err_Init If Dir(FileName, vbNormal Or vbArchive) = "" Then Exit Function End If FileNo = FreeFile Open FileName For Binary Access Read As #FileNo ReDim b(0 To LOF(FileNo) - 1) Get #FileNo, , b Close #FileNo LoadFile = b Exit Function Err_Init: MsgBox Err.Number & " - " & Err.Description End Function Public Function PictureFromByteStream(b() As Byte) As IPicture Dim LowerBound As Long Dim ByteCount As Long Dim hMem As Long Dim lpMem As Long Dim IID_IPicture(15) Dim istm As stdole.IUnknown On Error GoTo Err_Init If UBound(b, 1) < 0 Then Exit Function End If LowerBound = LBound(b) ByteCount = (UBound(b) - LowerBound) + 1 hMem = GlobalAlloc(&H2, ByteCount) If hMem <> 0 Then lpMem = GlobalLock(hMem) If lpMem <> 0 Then MoveMemory ByVal lpMem, b(LowerBound), ByteCount Call GlobalUnlock(hMem) If CreateStreamOnHGlobal(hMem, 1, istm) = 0 Then If CLSIDFromString(StrPtr("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"), IID_IPicture(0)) = 0 Then Call OleLoadPicture(ByVal ObjPtr(istm), ByteCount, 0, IID_IPicture(0), PictureFromByteStream) End If End If End If End If Exit Function Err_Init: If Err.Number = 9 Then 'Uninitialized array MsgBox "You must pass a non-empty byte array to this function!" Else MsgBox Err.Number & " - " & Err.Description End If End Function
:roll: