AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Desktopfarbe ermitteln und ändern?
Thema durchsuchen
Ansicht
Themen-Optionen

Desktopfarbe ermitteln und ändern?

Ein Thema von cruso · begonnen am 20. Jul 2006 · letzter Beitrag vom 31. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
cruso
(Gast)

n/a Beiträge
 
#1

Desktopfarbe ermitteln und ändern?

  Alt 20. Jul 2006, 22:11
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
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Desktopfarbe ermitteln und ändern?

  Alt 20. Jul 2006, 22:43
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

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
  Mit Zitat antworten Zitat
cruso
(Gast)

n/a Beiträge
 
#3

Re: Desktopfarbe ermitteln und ändern?

  Alt 20. Jul 2006, 22:55
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!
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Desktopfarbe ermitteln und ändern?

  Alt 20. Jul 2006, 23:05
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
  Mit Zitat antworten Zitat
cruso
(Gast)

n/a Beiträge
 
#5

Re: Desktopfarbe ermitteln und ändern?

  Alt 20. Jul 2006, 23:07
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.
  Mit Zitat antworten Zitat
cruso
(Gast)

n/a Beiträge
 
#6

Re: Desktopfarbe ermitteln und ändern?

  Alt 20. Jul 2006, 23:11
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...
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Desktopfarbe ermitteln und ändern?

  Alt 20. Jul 2006, 23:33
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.

Zu deiner Frage: klick

Gruß Hawkeye
  Mit Zitat antworten Zitat
cruso
(Gast)

n/a Beiträge
 
#8

Re: Desktopfarbe ermitteln und ändern?

  Alt 29. Jul 2006, 16:25
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?
  Mit Zitat antworten Zitat
cruso
(Gast)

n/a Beiträge
 
#9

Re: Desktopfarbe ermitteln und ändern?

  Alt 29. Jul 2006, 17:37
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!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Desktopfarbe ermitteln und ändern?

  Alt 29. Jul 2006, 17:42
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 Uhr.
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