Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Desktopfarbe ermitteln und ändern? (https://www.delphipraxis.net/73637-desktopfarbe-ermitteln-und-aendern.html)

cruso 20. Jul 2006 21:11


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

Hawkeye219 20. Jul 2006 21:43

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:
ColorToRGB(clBackground)
Zum Setzen der Farbe wirst du das Win-API bemühen müssen: MSDN-Library durchsuchenSetSysColors. Als Anwender würde ich es dir allerdings übel nehmen, wenn deine Applikation an meinen Systemeinstellungen herumpfuscht.

Gruß Hawkeye

cruso 20. Jul 2006 21:55

Re: Desktopfarbe ermitteln und ändern?
 
Zitat:

Zitat von Hawkeye219
Als Anwender würde ich es dir allerdings übel nehmen, wenn deine Applikation an meinen Systemeinstellungen herumpfuscht.

Gruß Hawkeye


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!

Hawkeye219 20. Jul 2006 22:05

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

cruso 20. Jul 2006 22:07

Re: Desktopfarbe ermitteln und ändern?
 
Zitat:

Zitat von Hawkeye219
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

Das müsste trotzdem gehen, wenn ich den Desktop danach aktualisiere.

cruso 20. Jul 2006 22:11

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

Hawkeye219 20. Jul 2006 22:33

Re: Desktopfarbe ermitteln und ändern?
 
Wenn du es wirklich über die Registry versuchen möchtest:

Code:
HKEY_CURRENT_USER\Control Panel\Colors: "Background"
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.

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: klick

Gruß Hawkeye

cruso 29. Jul 2006 15:25

Re: Desktopfarbe ermitteln und ändern?
 
Ich habe nun so versucht die Desktopfarbe zu verändern:

Delphi-Quellcode:
procedure TForm1.ColorBox1Change(Sender: TObject);
var new, old: TColor;
begin
old:= clBackground;
new:=ColorBox1.Selected;
SetSysColors(1, old, new);
end;
Wenn ich das allerdings mache, dann ändert sich... gar nichts. Es liegt immernoch die selbe Desktopfarbe vor. Woran liegt das?

cruso 29. Jul 2006 16:37

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!

Luckie 29. Jul 2006 16:42

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 10:03 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz