Gui, installGui: Add, Text, w280 h44 HwndVTlogo_png ; высоту и ширину картинки придется указать вручную
HBITMAP := Create_VTlogo_png()
Bitmap_SetImage(VTlogo_png, HBITMAP)
Gui, installGui: Show
Return
Bitmap_SetImage(hCtrl, hBitmap) {
WinSet, Style, +0x0E, ahk_id %hCtrl%
SendMessage, 0x172, 0x00, %hBitmap%, , ahk_id %hCtrl%
Return ErrorLevel
}
CreateBitMap(B64) {
If !DllCall("Crypt32.dll\CryptStringToBinary", "Ptr", &B64, "UInt", 0, "UInt", 0x01, "Ptr", 0, "UIntP", DecLen, "Ptr", 0, "Ptr", 0)
Return False
VarSetCapacity(Dec, DecLen, 0)
If !DllCall("Crypt32.dll\CryptStringToBinary", "Ptr", &B64, "UInt", 0, "UInt", 0x01, "Ptr", &Dec, "UIntP", DecLen, "Ptr", 0, "Ptr", 0)
Return False
hData := DllCall("Kernel32.dll\GlobalAlloc", "UInt", 2, "UPtr", DecLen, "UPtr")
pData := DllCall("Kernel32.dll\GlobalLock", "Ptr", hData, "UPtr")
DllCall("Kernel32.dll\RtlMoveMemory", "Ptr", pData, "Ptr", &Dec, "UPtr", DecLen)
DllCall("Kernel32.dll\GlobalUnlock", "Ptr", hData)
DllCall("Ole32.dll\CreateStreamOnHGlobal", "Ptr", hData, "Int", True, "PtrP", pStream)
hGdip := DllCall("Kernel32.dll\LoadLibrary", "Str", "Gdiplus.dll", "UPtr")
VarSetCapacity(SI, 16, 0), NumPut(1, SI, 0, "UChar")
DllCall("Gdiplus.dll\GdiplusStartup", "PtrP", pToken, "Ptr", &SI, "Ptr", 0)
DllCall("Gdiplus.dll\GdipCreateBitmapFromStream", "Ptr", pStream, "PtrP", pBitmap)
DllCall("Gdiplus.dll\GdipCreateHBITMAPFromBitmap", "Ptr", pBitmap, "PtrP", hBitmap, "UInt", 0)
DllCall("Gdiplus.dll\GdipDisposeImage", "Ptr", pBitmap)
DllCall("Gdiplus.dll\GdiplusShutdown", "Ptr", pToken)
DllCall("Kernel32.dll\FreeLibrary", "Ptr", hGdip)
DllCall(NumGet(NumGet(pStream + 0, 0, "UPtr") + (A_PtrSize * 2), 0, "UPtr"), "Ptr", pStream)
Return hBitmap
}
Create_VTlogo_png() {
Static hBitmap := 0
If hBitmap
Return hBitmap
VarSetCapacity(B64, 2020 << !!A_IsUnicode)
B64 := "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"
hBitmap := CreateBitMap(B64)
Return hBitmap
}
Каждой картинка записывается в отдельной функции.