![]() |
Desktopfarbe ermitteln und ändern?
Hi!
Wisst ihr, wie man die Desktopfarbe ermitteln und ändern kann? Es würde mir schon ausreichen, wenn ich wüsste wo in der Registry diese abgespeichert ist. MfG Cruso |
Re: Desktopfarbe ermitteln und ändern?
Hallo cruso,
zum Auslesen der Farbe brauchst du keinen Zugriff auf die Registry, weil Delphi die Farbe in der Konstanten clBackground zur Verfügung stellt. Die RGB-Anteile erhältst du mit
Delphi-Quellcode:
Zum Setzen der Farbe wirst du das Win-API bemühen müssen:
ColorToRGB(clBackground)
![]() Gruß Hawkeye |
Re: Desktopfarbe ermitteln und ändern?
Zitat:
In meinem Programm kann man das ändern! Man muss nicht. Allerdings wäre es mir lieber, wenn ich es in der Registry ändern könnte. Das geht bei der Desktopausrichtung auch prima! |
Re: Desktopfarbe ermitteln und ändern?
Wenn eine Systemfarbe geändert wird, sollten alle laufenden Applikationen darüber informiert werden. Die Funktion SetSysColors berücksichtigt das, indem sie den Applikationen die Nachricht WM_SYSCOLORCHANGE schickt. Ich bin nicht sicher, ob das auch bei einer direkten Änderung über die Registry zutrifft - falls dies überhaupt möglich ist.
Gruß Hawkeye |
Re: Desktopfarbe ermitteln und ändern?
Zitat:
|
Re: Desktopfarbe ermitteln und ändern?
Könntest du mir für die Funktion SetSysColors ein Codebeispiel geben? Denn ich weiß nicht genau, was ich da alles übergeben muss. RGB is klar aber was noch...
|
Re: Desktopfarbe ermitteln und ändern?
Wenn du es wirklich über die Registry versuchen möchtest:
Code:
Vermutlich werden die laufenden Applikationen von dieser Änderung nichts mitbekommen, ein Aktualisieren des Desktops dürfte da auch nicht helfen. Falls also eine Anwendung clDesktop benutzt, wird sie wahrscheinlich weiterhin die "falsche" Farbe anzeigen. Möglicherweise wird eine Änderung auch erst nach einem Neustart von Windows berücksichtigt.
HKEY_CURRENT_USER\Control Panel\Colors: "Background"
Probiere einfach mal aus, ob eine Änderung überhaupt möglich ist, und ob der Desktop und die Anwendungen automatisch reagieren. Vergiß aber nicht, das Ergebnis mitzuteilen, dann haben andere auch was davon. :wink: Zu deiner Frage: ![]() Gruß Hawkeye |
Re: Desktopfarbe ermitteln und ändern?
Ich habe nun so versucht die Desktopfarbe zu verändern:
Delphi-Quellcode:
Wenn ich das allerdings mache, dann ändert sich... gar nichts. Es liegt immernoch die selbe Desktopfarbe vor. Woran liegt das?
procedure TForm1.ColorBox1Change(Sender: TObject);
var new, old: TColor; begin old:= clBackground; new:=ColorBox1.Selected; SetSysColors(1, old, new); end; |
Re: Desktopfarbe ermitteln und ändern?
Gut also ich habe nun versucht das ganze in der Registry zu ändern. Das funktioniert allerdings nicht ganz so wie ich mir das vorgestellt habe. Wenn ich den Wert ändere muss ich den Computer erst neu starten bevor ich das Resultat sehe. Wenn ich das in "Eigenschaften von Anzeige" ändere ist doch auch kein Neustart nötig. Wie kann ich das ohne Neustart machen?
Ich habe schon versucht den Desktop danach zu aktualisieren - Erfolglos! |
Re: Desktopfarbe ermitteln und ändern?
Ich glaube, hier liegt ein Missverständnis vor. Mit SetSysColor kann man die Farbe von Fensterelementen systemweit ändern. Der Delphi Alias clBackground bezeichnet hierbei wohl die Hintergrundfarbe des Fensters. cruso will aber die Farbe des Desktops ändern.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz