AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi [VISTA] Globaler Hotkey - Hintergrundbild ändern

[VISTA] Globaler Hotkey - Hintergrundbild ändern

Ein Thema von Nils_13 · begonnen am 10. Okt 2009 · letzter Beitrag vom 11. Okt 2009
Antwort Antwort
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

[VISTA] Globaler Hotkey - Hintergrundbild ändern

  Alt 10. Okt 2009, 23:03
Hi,

ich habe ein ganz simples Programm, das den Desktophintergrund ändern soll. Es stehen immer nur zwei zur Wahl. Wenn ich kein Programm offen habe, kann ich Strg+Alt+E blutig hauen und es wird immer brav gewechselt. Sobald nur ein kleinstes Notepad oder der Explorer offen sind (egal ob aktiv oder inaktiv) passiert rein gar nichts mehr. Der Wert in der Registry ändert sich zwar, aber der Desktophintergrund wird nicht geändert. Nur manchmal ändert sich der Hintergrund noch viel später. Das passiert aber nur ganz selten und dann auch nur, wenn der Desktop neu gezeichnet werden muss. Aber nicht immer wenn der Desktop aktualisiert wird, ändert sich der Hintergrund. Nun mal ein Beispiel: Ich öffne via Win+E den Explorer, drücke meinen Hotkey - nichts passiert. Nun schließe ich den Explorer, drücke Win+E und schließe ihn wieder und drücke dann den Hotkey - der Desktophintergrund ändert sich. Total seltsam, das Notepad hat ein gleiches Verhalten. Man könnte meinen, es wäre ein Problem mit dem Hotkey, aber der wird laut Debugger immer ausgeführt. Auch im Programm stimmt der Ablauf. Also kann es nur an dem ShellExecute liegen, aber warum ? Was ist unter Vista wieder mal anders als unter XP ? Was ich nur nochmal zusammenfassen kann: Der Ablauf, wann nun wirklich das Hintergrundbild geändert wird kommt nicht so ganz raus. Ich habe viel getestet und wie eben geschildert auch Abläufe festgestellt, aber ich spüre trotzdem irgendwie, dass es keine einheitlichen Fehlabläufe sind, sondern es nur so erscheint, als würde Vista irgendetwas anders machen als XP und das nur sporadisch.
Delphi-Quellcode:
  protected
    { Protected-Deklarationen }
    procedure WMHotKey(var Message : TMessage); message WM_HOTKEY;
  end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  RegisterHotKey(Handle, 1, MOD_CONTROL or MOD_ALT, Ord('E'));
end;

procedure TfrmMain.FormDestroy(Sender: TObject);
begin
  UnregisterHotKey(Handle, 1);
end;

procedure TfrmMain.WMHotKey(var Message : TMessage);
var Reg : TRegistry;
begin
  if Message.wParam = 1 then
  begin
    Reg := TRegistry.Create;
    try
      Reg.OpenKey('Control Panel\Desktop', True);
      Reg.ReadString('Wallpaper');
      with TIniFile.Create(ExtractFilePath(ParamStr(0))+'settings.ini') do
      begin
        if Reg.ReadString('Wallpaper') = ReadString('a', '1', '') then
          Reg.WriteString('Wallpaper', ReadString('a', '2', ''))
        else
          Reg.WriteString('Wallpaper', ReadString('a', '1', ''));
        ShellExecute(Handle, 'open', PChar('C:\WINDOWS\System32\RUNDLL32.EXE'), PChar('user32.dll, UpdatePerUserSystemParameters'), nil, 0);
        Free;
      end;
    finally
      Reg.Free;
    end;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: [VISTA] Globaler Hotkey - Hintergrundbild ändern

  Alt 10. Okt 2009, 23:16
Sollte man nicht eher die API-Funktion zum Ändern des Wallpapers verwenden?
MSDN-Library durchsuchenSystemParametersInfo / MSDN-Library durchsuchenSPI_SETDESKWALLPAPER

Viele Grüße
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#3

Re: [VISTA] Globaler Hotkey - Hintergrundbild ändern

  Alt 11. Okt 2009, 11:14
Und da gibt es sogar einen Eintrag in der Code-Library zu, oh Mann Es funktioniert sowohl unter XP als auch unter Vista. Danke!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:04 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