Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wie Wallpaper wechsel mitbekommen ? (https://www.delphipraxis.net/136263-wie-wallpaper-wechsel-mitbekommen.html)

turboPASCAL 26. Jun 2009 19:17


Wie Wallpaper wechsel mitbekommen ?
 
Hi,

wie kann man mitbekommen ob sich der Desktop-Wallpaper geändert hat ?

Popov 26. Jun 2009 19:43

Re: Wie Wallpaper wechsel mitbekommen ?
 
Meinst du jetzt Message? Der Pfad ist in der Registry und ist einfach zu ermitteln. Also ob es dafür eine Message gibt, weiß ich nicht, aber alle paar Sekunden den Pfad vergleichen wäre die einfachste Methoden.

HKEY_CURRENT_USER\Control Panel\Desktop\ >> Wallpaper

DeddyH 26. Jun 2009 19:55

Re: Wie Wallpaper wechsel mitbekommen ?
 
Nur ein Gedanke: wenn ich den Artikel zu MSDN-Library durchsuchenSystemParametersInfo richtig verstanden habe, wird (oder kann zumindest) ein Aufruf von WM_SETTINGCHANGE an alle Top-Level-Windows erfolgen. Wäre zumindest ein Ansatz, den man mal verfolgen könnte ;)

toms 26. Jun 2009 20:57

Re: Wie Wallpaper wechsel mitbekommen ?
 
Delphi-Quellcode:
private
  procedure WMSettingChange(var Msg : TMessage); message WM_SETTINGCHANGE;
end;

implementation

procedure TForm1.WMSettingChange(var Msg : TMessage);
begin
  if Msg.WParam = SPI_SETDESKWALLPAPER then
    Caption := 'Das Desktop-Wallpaper hat sich geändert!';
end;

turboPASCAL 27. Jun 2009 05:55

Re: Wie Wallpaper wechsel mitbekommen ?
 
Zitat:

Meinst du jetzt Message?
Ja, natürlich. Warum hab ich das denn nicht dazu geschrieben ? :gruebel:
Man(n) wird alt...

Zitat:

Zitat von toms
Delphi-Quellcode:
//...

procedure TForm1.WMSettingChange(var Msg : TMessage);
begin
  if Msg.WParam = SPI_SETDESKWALLPAPER then
    Caption := 'Das Desktop-Wallpaper hat sich geändert!';
end;


Hm, es funktioniert. Ich hatte zwei andere Varianten die das selbe Prinzip hatten aber nicht funktionierten.

turboPASCAL 27. Jun 2009 07:33

Re: Wie Wallpaper wechsel mitbekommen ?
 
// Edit:

Es funktiomiert nicht. Jeden falls unter Win XP.

Code:
[color=#000080][b]procedure[/b][/color] TForm1.WMSettingChange([color=#000080][b]var[/b][/color] Msg : TMessage);
[color=#000080][b]begin[/b][/color]
[color=#ff0000] if Msg.WParam = SPI_SETDESKWALLPAPER then[/color][color=#008000] // Breakpoint[/color]
    GetActiveDesktopWallpaper;
[color=#000080][b]end[/b];[/color]

Hier kommt unter XP SP2/SP3 als Msg.WParam der Wert Null.
Mit Vista SP2 und Windows 7 ist dieser Wert wie erwartet gleich SPI_SETDESKWALLPAPER also 20.

Fridolin Walther 27. Jun 2009 10:19

Re: Wie Wallpaper wechsel mitbekommen ?
 
Im Zweifelsfall könntest Du immer noch den von Popov genannten Registry Schlüssel mit Hilfe von MSDN-Library durchsuchenRegNotifyChangeKeyValue überwachen lassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 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