- PNG decompression for Icons was introduced in WIN Vista
- ICONs needn't be SQUARE
- Passing fIcon parameter as false to CreateIconFromResourceEx() function, should create a hCursor (not tested)
- Thanks to Helgef and just me in ask-for-help topic: Anybody using Menu, Tray, Icon, HICON:%hIcon% ?
Related: - Base64 encoder/decoder for Binary data
- Base64ToComByteArray() :: Include image in script and display it with WIA 2.0
Note: You need to pass original file-size as parameter 2.
Code: Select all
#NoEnv
#SingleInstance, Force
#NoTrayIcon
Menu, Tray, UseErrorLevel
PNG10x10 := "iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAgMAAADwXCcuAAAACVBMVEXOgwD///90SQCsNO1SAA"
. "AAH0lEQVQI12MAARFWBgYx1gYwFg0F0ksb4HwupgaQEgBelQU38+DeFgAAAABJRU5ErkJggg=="
hICON := Base64PNG_to_HICON( PNG10x10, 109, 48, 48 ) ; Create a HICON for Tray
Menu, Tray, Icon, HICON:*%hICON% ; AHK makes a copy of HICON when * is used
Menu, Tray, Icon
DllCall( "DestroyIcon", "Ptr",hICON ) ; Destroy original HICON
PNG256x256 := "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAAAflBMVEXOgwD///+AUQDz5NSTXQDj3NSliWe7dwCnagDGtaPnx6Pbp2eG"
. "VQDt1rz6+PXRjSTJgADCewCycQCeZADkwJbhuIf58ur06t/qzrDesHirbQDw3ci0nILYn1TVlj+KYSSiZwCYYQCOWgDVyby+q5acfFSTbz/u4dTc08jN"
. "v7D3Mcn0AAACq0lEQVR42uzaXW/aMBSA4WMn4JAQyAff0A5o123//w/OkSallUblSDm4qO9759zYfo4vI0RERERERERERERERERERERERB97Kva5L3lX"
. "6deroljKXVoWxcpvWCbv2vkP++JJdFvud8nCfFZSrlQP8bwqE/NZiyTfa82hOJqgNrkotd6YoI6FKFSa4LYqM1huTXCljN7aGIX9dSbgW8vYJWZIopAZ"
. "UgIAAADEBHCuigvwy9VRAawvbQ91NICJP8A8zZoqIkDXPIsG8K+Liwngu1ZRAXxtXADbxgawTVwAGx0gBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
. "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgI8BDBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD6"
. "AFOFHgrAKgQAAAAAAAAAADwegBuphwX4ln+KAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
. "AAAAAAAAAAAAAAAAAAAAAPA1AY5mQAsNgIUZ0O/RAQozoJkGQG4GNB0dQNbhE/hjNQBkF/4CT3Z8AFmutkGbv/y0OgDyvNuYgLavP6wGQGdQ5GVy+xCT"
. "yezU3V4LoDNY50lyG3/yMpt2t1cB6EunvtOsr1u/2RuJQm9T36zv1S/7m+sD2CGJQva/AQDAnQAudkBzUWhuB3SRsXN2QJkolNkBORm9JnwCZ1HpHP4C"
. "G1GoOlyDNm9rUao+Bw3heqhEqcplbXr7EGmaNbWoVjdZmt7GT9vMVaKf8zVZn/PVcsdq58v6Ds5XCRERERER/W0PDgkAAAAABP1/bfQEAAAAAAAL2VmK"
. "C7LwdTIAAAAASUVORK5CYII="
hICON := Base64PNG_to_HICON( PNG256x256, 878, 256, 256 )
Gui, Margin, 20, 20
Gui, Add, Picture,, HICON:%hICON%
Gui, Show,, Base64PNG_to_HICON() DEMO
Return ; // end of auto-execcute section //
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Base64PNG_to_HICON( B64, nBytes, W:=16, H:=16 ) {
Local Bin, BLen, hICON:=0
VarSetCapacity( Bin,nBytes,0 ), BLen := StrLen(B64)
If DllCall( "Crypt32.dll\CryptStringToBinary", "Str",B64, "UInt",BLen, "UInt",0x1
, "Ptr",&Bin, "UIntP",nBytes, "Int",0, "Int",0 )
hICON := DllCall( "CreateIconFromResourceEx", "Ptr",&Bin, "UInt",nBytes, "Int",True
, "UInt",0x30000, "Int",W, "Int",H, "UInt",0, "UPtr" )
Return hICON
}