Jump to content

get color of taskbar


Recommended Posts

I have the following code. You can see there are $color_normal and $color_trans

In my case normal is too dark . And color trans is to much violet.

If you run it you will see how its looks. I want gui with listView have the same color like taskbar in windows 10.

How to achieve that?

 

 

#include <Date.au3>
#include <MsgBoxConstants.au3>
#include <GuiListBox.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>


HotKeySet("{ESC}", "Terminate")


$color_normal = "0x" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 24), 6)
$color_trans = "0x" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 16), 6)
$trans = RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "EnableTransparency")
ConsoleWrite("Transpart = " & $trans & @CRLF)
ConsoleWrite("Color normal = " & $color_normal & @CRLF)
ConsoleWrite("Color trans = " & $color_trans & @CRLF)


ConsoleWrite(_Get_taskbar_color()); It return AARRGGBB
$taskbarColor = _Get_taskbar_color()


Global $gui = GUICreate("Test", 150, 58,@DesktopWidth-300,@DesktopHeight-58,$WS_POPUP,BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))


Global $idListview = GUICtrlCreateListView("", 0, 0, 150, 58,BitOR($LBS_NOTIFY,$LBS_SORT), 0)
;_GuiCtrlMakeTrans(-1,100)
; Add column
_GUICtrlListView_AddColumn($idListview, "Msgs", 100)

GUICtrlSetFont(-1, 7, 400, 0, "Segoe UI")
GUICtrlSetColor(-1, 0x470C4F)


GUICtrlSetBkColor($idListview, 0x310638)
GUISetState()



While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd



Func Terminate()
    Exit
EndFunc




Func _Get_taskbar_color()
    If RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "ColorPrevalence") Then
        If RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "EnableTransparency") Then
            Return  "0xD9" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 16), 6)
        Else
            Return "0xFF" & StringLeft(StringRight(RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Accent", "AccentPalette"), 24), 6)
        EndIf
    Else
        If RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize", "EnableTransparency") Then
            Return "0xD9000000"
        Else
            Return "0xFF000000"
        EndIf
    EndIf
EndFunc

 

Link to comment
Share on other sites

To get the actual color, it's not stored as 0xFFrrggbb, where rr=red byte value, gg=green byte value, bb=blue byte value. I wrestled with this same issue and found that Microsoft, for some reason, stores the color as 0xFFbbggrr , the exact opposite order of an RGB value.  Here are the three lines I used to get the RGB value:
 

$theMWTitleBarColor = Hex(RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM", "AccentColor"))
  $theMWTitleBarColor = StringRight($theMWTitleBarColor, 6)
  $theMWTitleBarColor = "0x" & StringRight($theMWTitleBarColor, 2) & StringMid($theMWTitleBarColor, 3, 2) & StringLeft($theMWTitleBarColor, 2)

I used it in my own function to generate a message window with a fake title bar (so the window can't be dragged anywhere). I also used a different registry key, but when I compared the values on my system they were the same so you can continue to use the registry key you have been using.

Who lied and told you life would EVER be fair?

Link to comment
Share on other sites

You can use _WinAPI_SwitchColor() to convert from BGR to RGB.

 

Edit: Sorry, but it does not work with alpha value. This function could be improved....

Edited by funkey

Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs, and the Universe
trying to produce bigger and better idiots.
So far, the Universe is winning.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...