Seite 2 von 4

Re: original Window Farben auslesen

Verfasst: 23.08.2021 18:28
von Varistor
Hast schon recht. Ich finde es nur immer wieder traurig, dass es bei so simplen Dingen wie der Fensterfarbe, so schwierig sein kann, diese zu ermitteln. Was habe ich damals gegoogelt um eine Lösung zu finden. Aber nix...

Re: original Window Farben auslesen

Verfasst: 23.08.2021 18:38
von northstarex
ich sage immer.... viele Wege führen nach Rom :)

Re: original Window Farben auslesen

Verfasst: 23.08.2021 18:54
von jacdelad
Professionell meint sicher eine API.

Und sorry für die falsche Aussage meinerseits. Ich war mir sicher, dass man damit alle Farben bekommt. Vielleicht damit: https://docs.microsoft.com/en-us/window ... ationcolor

Re: original Window Farben auslesen

Verfasst: 23.08.2021 21:38
von Varistor
Ja, genau damit geht es. Aber wie ?! Womit wir wieder am Anfang wären.

Re: original Window Farben auslesen

Verfasst: 23.08.2021 22:59
von northstarex
cool.... hat wer ne idee?

Re: original Window Farben auslesen

Verfasst: 23.08.2021 23:48
von jacdelad

Code: Alles auswählen

Define color.l,opaque.l,library.i
library=OpenLibrary(#PB_Any,"dwmapi.dll")
If library
  If CallFunction(library,"DwmGetColorizationColor",@color,@opaque)
    Debug "Fehler"
  Else
    Debug "Erfolg"
    Debug "Farben:"
    
    Debug "R:"+Str(PeekA(@color+2))
    Debug "G:"+Str(PeekA(@color+1))
    Debug "B:"+Str(PeekA(@color))
    Debug "A:"+Str(PeekA(@color+3))
    
    If opaque
      Debug "Opaque=1"
    Else
      Debug "Opaque=0"
    EndIf
  EndIf
EndIf
Aber ich bin mir gerade nicht sicher, ob ich R, G, B und A richtig zugeordnet habe. Das Format ist etwas anders als das in PureBasic normalerweise verwendete, deshalb muss man die Bytes in color zur weiteren Verwendung umsortieren.

Re: original Window Farben auslesen

Verfasst: 24.08.2021 01:15
von northstarex
R,G,B Reihenfolge sollten so passen (sollte so sein: B,G,R)

alle rgb Werte werden bei mir negativ ausgegeben... soll das so?

ich habe mal aus PeekB mal PeekA editiert. Jetzt sind alle negativen Zahlen positiv und passt jetzt auch zu meiner Windows-Rahmenfarbe.


Was wir jetzt noch vergessen haben, ist die Schriftfarbe auf dem Fensterbalken. Wäre schön, wenn wir das auch noch hinbekommen. thx :)

Re: original Window Farben auslesen

Verfasst: 24.08.2021 02:19
von jacdelad
Ja, stimmt, PeekA. Hab ich übersehen. Hab's oben korrigiert.
Die Schriftfarbe ist nicht so einfach, weil die unter Umständen dynamisch an die Basisfarbe angepasst wird:
https://stackoverflow.com/questions/245 ... indows-8-1

Re: original Window Farben auslesen

Verfasst: 24.08.2021 18:05
von Varistor
Ok, so weit war ich auch schon mal. Stimmen denn bei euch die ermittelten Farben unter Win 7,8, oder 10 mit den tatsächlichen angezeigten Farben überein ?! Bei mir jedenfalls war das nie der Fall. Es scheint noch irgendwelche "Korrekturwerte zu geben, die unter den verschiedenen Betriebssystemen zum Einsatz kommen. Die ermittelten Farben waren entweder leicht zu hell bzw. zu dunkel. Ich verweise noch einmal auf den Registry-Schlüssel #HKEY_CURRENT_USER Software\Microsoft\Windows\DWM. Dort steht ja noch so allerhand drin. Jedenfalls sollte man ja annehmen, dass wenn man dort den Farbwert von ""ColorizationColor"" und "ColorizationColorBalance" ausliest, die angezeigten Farbwerte bekommt. (Natürlich in der für uns ungewohnten RGBA-Form - was man leicht umfummeln kann.)
Wie auch immer, die Farben ob per Registry oder per dwmapi.dll ermittelt, haben bei mir nie genau die Fenstertitelfarbe ergeben.

Re: original Window Farben auslesen

Verfasst: 25.08.2021 15:06
von Benubi
Wie sieht es mit Transparenz aus und diese ganzen "neuen" Effekte die man so hat - sicherlich werden diese die gesehene Farbe auch beeinflußen?
(Ich habe eine etwas ältere Windows Version... hust).