Autor Beitrag
patmann2001
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: Fr 05.11.04 17:42 
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
Zitat:
Current
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

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: 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.

_________________
Klein, schwarz und ärgert Techniker? Jumper!
Radioactive
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 179

Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
BeitragVerfasst: 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.:
ausblenden Delphi-Quelltext
1:
var myReg: TRegistry;					


2) Man createt es in der FormCreate-Methode: myReg := TRegistry.Create;

3) Beim Click auf Button1 wird der Wert ausgelesen und im Label1 angezeigt:
ausblenden 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.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 05.11.04 18:19 
Das nennst du einfach? Na ja, jedem das seine ... ;)

Ich bin der Meinung, dass es die Systemfarben wie clXXXXX auch in Delphi 4 schon gibt/gab. Und wenn nicht, dann hilft vllt. die API-Funktion GetSysColor weiter, dort stehen die Konstanten für diverse Systemfarben, u.a. auch der Desktop: COLOR_DESKTOP.
patmann2001 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: 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)