Farbe eines Fensterhintergrund in RGB ermitteln.

Anfängerfragen zum Programmieren mit PureBasic.
MacThommes
Beiträge: 21
Registriert: 11.11.2025 15:38

Farbe eines Fensterhintergrund in RGB ermitteln.

Beitrag von MacThommes »

Ja, da bin ich wieder....
Ich versuche gerade heraus zu bekommen, wie ich eine Farbe (RGB-Wert) eines Fensters heraus bekomme.
Das Problem:
Wenn ich ein Programm starte und sich dort ein Fenster öffnet, hat dies eine bestimmte Hintergrundfarbe.
Z.B. wenn ich den "Darkmodus" im System einstelle, werden die Programme alle einen dunklen Hintergrund haben. Wenn ic diesen Darkmodus nicht eingestellt habe, ist der Hintergrund der Fenster hell.
Gibt es eine Möglichkeit, den RGB-Wert eines aktuellen Fensters zu ermitteln?
Ich such mir hier einen Wolf, finde aber nichts passendes.
Ich benötige das um - wenn ich in dieses Fenster mittels ImageGadget etc. etwas zeichnen will (Ja, dank der hilfe hier geht das :allright: ), muss ich teilweise mit der selben Farbe zeichnen, wie die Farbe des Hintergrundes.
Ich hoffe, ich hab das Problem gut schildern können.
Ich sag schon mal danke für die über 1000 passenden Antworten. :wink:
SMaag
Beiträge: 185
Registriert: 08.05.2022 12:58

Re: Farbe eines Fensterhintergrund in RGB ermitteln.

Beitrag von SMaag »

ungetestet mit WinAPi

Code: Alles auswählen

hWnd = WindowID(#Window) ; #Window := PB Window No
hDC=GetDC_(hWnd)
RGBCol=GetBkColor_(hDC)

oder
Farbe = GetWindowColor(#Window)
Benutzeravatar
mk-soft
Beiträge: 3869
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Farbe eines Fensterhintergrund in RGB ermitteln.

Beitrag von mk-soft »

Funktioniert nicht mehr mit Windows 10 oder höher ...

Code: Alles auswählen

     If StartDrawing(WindowOutput(0))
      color = Point(0,0)
      Debug Hex(color)
      StopDrawing()
    EndIf
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
TroaX
Beiträge: 699
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Farbe eines Fensterhintergrund in RGB ermitteln.

Beitrag von TroaX »

Das Finktioniert generell mit den alten Steuerelementen nicht richtig. Ohne API kommst du da nicht weit. Am Ende sind es nur spezifische Hintergründe. Aber einen "echten" Darkmode habe ich das erste mal unter Linux gesehen. Und da machen GTK/Qt das über die Systemeinstellungen automatisch. Da brauchste dir keine Platte machen. Unter Windoof ist es aber nur Frust :(
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: N150 Mini-PC | 16 GB RAM | Debian 13+CasaOS
Coding: Purebasic, Spiderbasic, GDevelop, PHP
Blog: https://techtroax.de
Repos: https://codeberg.org/TroaX
Benutzeravatar
mk-soft
Beiträge: 3869
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Farbe eines Fensterhintergrund in RGB ermitteln.

Beitrag von mk-soft »

Das hat Fred, unser PureBasic Entwickler, auch schon gesagt das Windows mit ihren Controls und API's sehr ungenügend daran gearbeitet haben.
Und nicht jeder will DotNet verwenden.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
TroaX
Beiträge: 699
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Farbe eines Fensterhintergrund in RGB ermitteln.

Beitrag von TroaX »

Ich weiß. Ich erst recht nicht xD
Aber durch das neue WebViewGadget mache ich mir da keine Sorgen mehr. Ich bette einfach eine Spiderbasic-Anwendung so in ein Purebasic-Container und fertig ist ^^
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: N150 Mini-PC | 16 GB RAM | Debian 13+CasaOS
Coding: Purebasic, Spiderbasic, GDevelop, PHP
Blog: https://techtroax.de
Repos: https://codeberg.org/TroaX
MacThommes
Beiträge: 21
Registriert: 11.11.2025 15:38

Re: Farbe eines Fensterhintergrund in RGB ermitteln.

Beitrag von MacThommes »

Danke schon mal.
Also mit APIs möchte ich eigentlich nicht arbeiten, da diese unter Linux nicht funktionieren, wie ich anderswo gelesen habe. 8)
Das Progrämmchen soll auf allen Systemen laufen. Nicht nur auf dem Mac.
Mit "Farbe = GetWindowColor(#Window)" funktioniert nicht.
Ich habe festgestellt, das man da den Wert bekommt, den die obere Fensterleiste hat und nicht die Füllfarbe des Fensters.
Also: Unbrauchbar. :shock:

Code: Alles auswählen

     
   If StartDrawing(WindowOutput(0))
      color = Point(0,0)
      Debug Hex(color)
      StopDrawing()
    EndIf
... gibt mir eine 0 raus....
Seltsam auch: Alle Fenster auf meinem Desktop haben die RGB-Werte von 30, 30, 30.
Die Programmfenster, die ich dann bei PB öffne, haben verschiedene Werte. Mal: 33, 32, 36 oder 43, 42, 51... usw. :?
Benutzeravatar
mk-soft
Beiträge: 3869
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Farbe eines Fensterhintergrund in RGB ermitteln.

Beitrag von mk-soft »

Eigentlich nehme ich immer die Standard Farben. Also ändere ich keine.
Und wenn, dann keine Farbe von System.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
MacThommes
Beiträge: 21
Registriert: 11.11.2025 15:38

Re: Farbe eines Fensterhintergrund in RGB ermitteln.

Beitrag von MacThommes »

mk-soft hat geschrieben: 14.11.2025 22:10 Eigentlich nehme ich immer die Standard Farben. Also ändere ich keine.
Und wenn, dann keine Farbe von System.
Ich glaube, das ist die beste Lösung :D . Weil, wie weiter oben beschrieben, irgendwie die Farben der Fenster vom System ohne irgend ein System vergeben werden :? .
Werde nachher mal nachsehen, wie ich die Hintergrundfarbe eines Fensters ändere. Ich mit Sicherheit kein Hexenwerk.
Dann wünsche ich allen hier noch ein schönes Wochenende und schöne Grüße aus den schönen Ammergauer Alpen! 8)
Benutzeravatar
Shardik
Beiträge: 749
Registriert: 25.01.2005 12:19

Re: Farbe eines Fensterhintergrund in RGB ermitteln.

Beitrag von Shardik »

MacThommes hat geschrieben: Also mit APIs möchte ich eigentlich nicht arbeiten, da diese unter Linux nicht funktionieren, wie ich anderswo gelesen habe. 8)
Das Progrämmchen soll auf allen Systemen laufen. Nicht nur auf dem Mac.
Es gibt aber auch die Möglichkeit, für Linux, MacOS und Windows die jeweils spezifischen API-Funktionen zu verwenden - dann läuft ein solches Programm auf allen drei Plattformen. Eine Sammlung von solchen Multi-Plattform-Funktionen habe ich hier zusammengestellt.
Antworten