Entwickler-Ecke
Windows API - Windows Desktop Grundfarbe
patmann2001 - Fr 05.11.04 17:42
Titel: Windows Desktop Grundfarbe
Hallo
Ich möchte gern die aktuelle Hintergrundfarbe meines Desktops ermitteln. Dazu möchte ich auf keinen Fall irgendwelche Zeichenoperationen auf dem Desktop durchführen, also mit Hilfe von GetPixel oder so. Dazu habe ich hier im Forum einiges an Stoff gelesen und das möchte ich nicht. Es gibt in der Registry einen Pfad welcher da heißt:
Zitat: |
HKEY_CURRENT_USER\Control Panel\Appearance\Schemes |
In diesem Schlüssel sind alle Schema gespeichert die man unter Eigenschaften von Anzeige erstellt hat. Im Pfad
Zitat: |
HKEY_CURRENT_USER\Control Panel\Appearance |
gibt es den Schlüssel
in dem das aktuelle Schema eingestellt wird.
Ein Schema ist ein Binärschüssel, soviel weiss ich. Leider weiss ich nicht wie man
a) Diesen Schlüssel unter Delphi so laden kann, das man damit arbeiten kann.
b) Welche Positioinen in dem Schlüssel für die Desktopfarbe sind.
Unter Google habe ich für WinCE eine Beschreibung gefunden in der die zweite 4er Folge (also 8 Ziffern) für den Desktop sind. Sie beschreiben dort also eine Zahl im TColor Format. Leider habe ich für W2k dafür noch nichts gefunden.
Es währe mir schon geholfen, wenn mir jemand zeigen könnte, wie ich an die verschiedenen Zahlen komme um sie einfach an einen Canvas als TColor übergeben zu können.
Ich hoffe man versteht was ich sagen will.
Danke
Patmann
P.S. Hoffentlich das richtige Forum :?
blackbirdXXX - Fr 05.11.04 17:55
Also bei meine Delphi gibt es einen Farbcode der lautet: clBackground
Das ist die Desktopfarbe.
Ob es den aber bei D4 gibt, weiß ich nicht.
Radioactive - Fr 05.11.04 18:00
Titel: Es geht auch einfacher
Es geht auch einfacher:
Im Schlüssel "HKEY_CURRENT_USER\Control Panel\Colors" liegt unter dem Value "Background" die Hintergrundfarbe des Desktops in RGB-Farben mit Leerzeichen voneinander getrennt.
Die Werte ließt man in Delphi wie folgt aus:
1) Man vereinbart ein Objekt der Klasse TRegistry (Die muss noch bei uses hinzugefügt werden), also z.B.:
2) Man createt es in der FormCreate-Methode: myReg := TRegistry.Create;
3) Beim Click auf Button1 wird der Wert ausgelesen und im Label1 angezeigt:
Delphi-Quelltext
1: 2: 3: 4:
| myReg.RootKey := HKEY_CURRENT_USER; myReg.OpenKey('\Control Panel\Colors\'); Label1.Caption := myReg.ReadString('Background'); myReg.CloseKey; |
Im Label1 steht jetzt z.B.: "167 3 3".
Ich hoffe, dir ist damit geholfen.
patmann2001 - Sa 06.11.04 08:53
Danke Danke Danke :D
Ja, unter D4 gibt es clBackground womit mein Problem in einer Zeile gelöst ist.
Das mit dem Eintrag Color in der Registry und dem API GetSysColor wußte ich aber auch noch nicht. Ich werde mir das alles mal merken!
Vielen Dank für eure Hilfe
Patmann 8)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!