Shamelessly ripped from Raymond @ TheNewOldThing
get the color of a SOLID brush
#include <WinAPIGdi.au3> ;CreateSolidBrush
#include <WinAPIHObj.au3>
Local $hBrush = _WinAPI_CreateSolidBrush(0xFFDEDEFF)
ConsoleWrite("Brush Color = 0x" & Hex(_GetBrushColor($hBrush)) & @CRLF)
_WinAPI_DeleteObject($hBrush)
Func _GetBrushColor($hBrush)
;https://devblogs.microsoft.com/oldnewthing/20190802-00/?p=102747
Local $iErr
Local Const $BS_SOLID = 0x00000000
Local Const $tagLogBrush = "uint lbStyle; dword lbColor; ulong_ptr lbHatch"
Local $tLogBrush = DllStructCreate($tagLogBrush)
Local $iSzLogBrush = DllStructGetSize($tLogBrush)
If _WinAPI_GetObject($hBrush, $iSzLogBrush, DllStructGetPtr($tLogBrush)) <> $iSzLogBrush Then
$iErr = 0x1
ElseIf DllStructGetData($tLogBrush, "lbStyle") <> $BS_SOLID Then
$iErr = 0x2
Else
Return DllStructGetData($tLogBrush, "lbColor")
EndIf
Return SetError($iErr, 0, 0xFFFFFFFF) ;CLR_NONE
EndFunc