Not so easy.
#Include <APIConstants.au3>
#Include <WinAPIEx.au3>
Global Const $tagICONRESDIR = 'byte Width;byte Height;byte ColorCount;byte Reserved;ushort Planes;ushort BitCount;dword BytesInRes;ushort IconId;'
Global Const $tagNEWHEADER = 'ushort Reserved;ushort ResType;ushort ResCount;' ; & $tagICONRESDIR[ResCount]
Global Const $tagIHDR = 'dword Width;dword Height;byte BitDepth;byte ColorType;byte CompressionMethod;byte FilterMethod;byte InterlaceMethod'
$hInstance = _WinAPI_LoadLibraryEx(@SystemDir & 'imageres.dll', $LOAD_LIBRARY_AS_DATAFILE)
$hResource = _WinAPI_FindResource($hInstance, $RT_GROUP_ICON, 3)
$hData = _WinAPI_LoadResource($hInstance, $hResource)
$pData = _WinAPI_LockResource($hData)
$tHdr = DllStructCreate($tagNEWHEADER, $pData)
$Count = DllStructGetData($tHdr, 'ResCount')
For $i = 1 To $Count
$tResDir = DllStructCreate($tagICONRESDIR, $pData + 6 + 14 * ($i - 1))
$hResource = _WinAPI_FindResource($hInstance, $RT_ICON, DllStructGetData($tResDir, 'IconId'))
$hInfo = _WinAPI_LoadResource($hInstance, $hResource)
$pIcon = _WinAPI_LockResource($hInfo)
If DllStructGetData(DllStructCreate('byte[8]', $pIcon), 1) = Binary('0x89504E470D0A1A0A') Then
; PNG => Retrieve IHDR chunk data (always first chunk, offset = 8)
$tHdr = DllStructCreate($tagIHDR, $pIcon + 16)
$Width = _WinAPI_SwapDWord(DllStructGetData($tHdr, 'Width'))
$Height = _WinAPI_SwapDWord(DllStructGetData($tHdr, 'Height'))
$Png = ' (PNG)'
Else
; ICO => Retrieve BITMAPINFOHEADER structure
$tHdr = DllStructCreate($tagBITMAPINFOHEADER, $pIcon)
$Width = DllStructGetData($tHdr, 'biWidth')
$Height = DllStructGetData($tHdr, 'biHeight') / 2
$Png = ''
EndIf
ConsoleWrite($Width & ' x ' & $Height & ', ' & DllStructGetData($tResDir, 'BitCount') & 'bpp' & $Png & @CR)
Next
_WinAPI_FreeLibrary($hInstance)