Desktop Background Color ändern.

  • Hi,
    in der User32.dll kann man irgendwie sofort die SetBkColor ändern.
    Allerdings weiss ich nicht genau, wie das Command formuliert werden muss.
    Müsste aber so ähnlich aussehen wie das command hier:
    DllCall("user32.dll",'int',"SystemParametersInfo","int","20","int",0,"str", "C:downloadshintergrundbild.bmp","int","2")

    Könnt ihr mir villeicht das Kommando anpassen ?

  • hi,
    also ich hab schon getestet, dass ich mit der user32.dll den Hintergrund ändern kann.
    Dann habe ich mir die dll angeschaut und festgestellt, dass sie auch einen Befehl mit SetBkColor enthält.
    Somit geh ich davon aus, dass man das damit genauso machen kann.
    Oder kann man nur den Hintergrund ändern, aber keine Hintergrundfarbe?
    Wenn dann müsste doch beides damit gehn, zumal setBkColor ja drin steht

    • Offizieller Beitrag

    Hier sind 2 Funktionen, eine zum lesen und eine zum setzen von Systemfarben.

    [autoit]

    Const $COLOR_SCROLLBAR = 0
    Const $COLOR_BACKGROUND = 1
    Const $COLOR_ACTIVECAPTION = 2
    Const $COLOR_INACTIVECAPTION = 3
    Const $COLOR_MENU = 4
    Const $COLOR_WINDOW = 5
    Const $COLOR_WINDOWFRAME = 6
    Const $COLOR_MENUTEXT = 7
    Const $COLOR_WINDOWTEXT = 8
    Const $COLOR_CAPTIONTEXT = 9
    Const $COLOR_ACTIVEBORDER = 10
    Const $COLOR_INACTIVEBORDER = 11
    Const $COLOR_APPWORKSPACE = 12
    Const $COLOR_BACKGROUNDMARKEDTEXT = 13
    Const $COLOR_MARKEDTEXT = 14
    Const $COLOR_BTN = 15
    Const $COLOR_BTNSHADOW = 16
    Const $COLOR_GRAYTEXT = 17
    Const $COLOR_BTNTEXT = 18
    Const $COLOR_INACTIVECAPTIONTEXT = 19
    Const $COLOR_BTNHIGHLIGHT = 20

    [/autoit][autoit][/autoit][autoit]

    ;~ Private Declare Function GetSysColor Lib "user32" _
    ;~ (ByVal nIndex As Long) As Long
    Func _GetSysColor($nIndex)
    $Color = DllCall("user32.dll", "long", "GetSysColor", "long", $nIndex)

    Return $Color[0]
    EndFunc ;==>_GetSysColor

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;~ Private Declare Function SetSysColors Lib "user32" _
    ;~ (ByVal nChanges As Long, lpSysColor As Long, _
    ;~ lpColorValues As Long) As Long
    Func _SetSysColor($nIndex, $nRGBColor)
    Local $structColor = DllStructCreate("udword")
    Local $structIndex = DllStructCreate("udword")

    DllStructSetData($structIndex, 1, $nIndex)
    DllStructSetData($structColor, 1, $nRGBColor)
    DllCall("user32.dll", "long", "SetSysColors", "long", 1, "ptr", DllStructGetPtr($structIndex), "ptr", DllStructGetPtr($structColor))
    EndFunc ;==>_SetSysColor

    [/autoit]

    Beispiel:

    [autoit]


    $OldDeskColor = _GetSysColor($COLOR_BACKGROUND)
    _SetSysColor($COLOR_BACKGROUND, 0xFFAA55)
    Sleep(5000)
    _SetSysColor($COLOR_BACKGROUND, $OldDeskColor)

    [/autoit]