original Window Farben auslesen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Varistor
Beiträge: 18
Registriert: 12.10.2004 21:38
Wohnort: Schwerin

Re: original Window Farben auslesen

Beitrag 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...
northstarex
Beiträge: 103
Registriert: 25.08.2013 18:04
Computerausstattung: alles mögliche^^
Wohnort: Schöppenstedt
Kontaktdaten:

Re: original Window Farben auslesen

Beitrag von northstarex »

ich sage immer.... viele Wege führen nach Rom :)
Bild
Benutzeravatar
jacdelad
Beiträge: 348
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: original Window Farben auslesen

Beitrag 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
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Benutzeravatar
Varistor
Beiträge: 18
Registriert: 12.10.2004 21:38
Wohnort: Schwerin

Re: original Window Farben auslesen

Beitrag von Varistor »

Ja, genau damit geht es. Aber wie ?! Womit wir wieder am Anfang wären.
northstarex
Beiträge: 103
Registriert: 25.08.2013 18:04
Computerausstattung: alles mögliche^^
Wohnort: Schöppenstedt
Kontaktdaten:

Re: original Window Farben auslesen

Beitrag von northstarex »

cool.... hat wer ne idee?
Bild
Benutzeravatar
jacdelad
Beiträge: 348
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: original Window Farben auslesen

Beitrag 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.
Zuletzt geändert von jacdelad am 24.08.2021 02:18, insgesamt 1-mal geändert.
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
northstarex
Beiträge: 103
Registriert: 25.08.2013 18:04
Computerausstattung: alles mögliche^^
Wohnort: Schöppenstedt
Kontaktdaten:

Re: original Window Farben auslesen

Beitrag 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 :)
Bild
Benutzeravatar
jacdelad
Beiträge: 348
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: original Window Farben auslesen

Beitrag 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
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Benutzeravatar
Varistor
Beiträge: 18
Registriert: 12.10.2004 21:38
Wohnort: Schwerin

Re: original Window Farben auslesen

Beitrag 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.
Benubi
Beiträge: 186
Registriert: 22.10.2004 17:51
Wohnort: Berlin, Wedding

Re: original Window Farben auslesen

Beitrag 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).
Antworten