Entwickler-Ecke

Windows API - Systemänderungen an Anwendungen melden...


mb - Fr 13.06.03 13:43
Titel: Systemänderungen an Anwendungen melden...
Hi!

Ich weiß, irgendwo hier wurde schon mal was darüber gepostet... Aber ich find es auf die Schnelle nicht und außerdem hat es damals nicht richtig geklappt, also hier nochmal:

Wenn ich Änderungen an Systemeinstellungen vornehme, möchte ich, dass alle Anwendungen sofort von diesen Änderungen erfahren (z.B. auf jeden Fall der Explorer). Wie kann ich das den Anwendungen mitteilen? (...ohne, dass sich der Explorer bei WinXP dabei verabschiedet *g*; das ist nämlich bisher mal passiert)

Danke schon mal.


DaFox - Fr 13.06.03 16:14

Hi.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/apcref/htm/apc_msg_5.asp

Gruß,
Markus


mb - Sa 14.06.03 00:35

Danke. Das sieht ja schon mal prima aus.
Nun doch noch gleich die Rückfrage (ich hab es dort nicht gefunden):

Wenn es nicht direkt über SystemParametersInfo geht (damit hatte ich zuvor eben auch schon die "Aufhänger" des Explorers produziert...), wie dann??

Also, wie übergebe ich bzw. sende ich dann die Messages?


DaFox - Sa 14.06.03 18:31

Hi!

mb hat folgendes geschrieben:

Wenn es nicht direkt über SystemParametersInfo geht [...], wie dann??


Das MSDN hat folgendes geschrieben:

Remarks

You cannot pass these values directly to the SystemParametersInfo function. Instead, you must explicitly query the appropriate registry settings for these values.


mb hat folgendes geschrieben:

Also, wie übergebe ich bzw. sende ich dann die Messages?


Steht alles auf der Seite. WM_SETTINGCHANGE ist die Nachricht (übrigens der Nachfolger von WM_WININICHANGE), als wParam gibt es die aufgezählten Möglichkeiten, lParam = 0.
Ergo: SendMessage() (oder PostMessage()) und im Zweifelsfall HWND_BROADCAST.

Gruß,
Markus


mb - So 15.06.03 22:53

Danke für die Mühe, dennoch besteht mein Problem weiter, denn mit
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETAPCSHELL, 0); hatte ich es schon zuvor versucht.

Das Problem ist aber an der Stelle, dass SPI_SETAPCSHELL überhaupt nicht zu existieren schein; ich vermute mal, weil der MSDN-Link ja zu Infos für Windows CE führt - ich schreibe für XP...


DaFox - Mo 16.06.03 00:34

Hi!

Ich weiß ehrlich gesagt selbst nicht, ob es funktioniert. Ich habe schon vieles gelesen, dass Leute damit nicht zurecht kamen (sprich: es funktionierte eben nicht). Allerdings ist dies der offizielle Weg, es wird schon was Wahres dran sein, was das MSDN schreibt :wink:
Die Konstanten zu WM_SETTINGCHANGE gelten keineswegs nur für WinCE, es könnte jedoch sein, dass Du sie unter älteren Delphiversionen selbst definieren musst (siehe Hexwerte auf der Seite).
Ansonsten kann ich Dir nur noch viel Glück wünschen. Wie gesagt, selbst habe ich mich damit noch nie herumgeschlagen, mir sind aber viele Probleme "bekannt".

Gruß,
Markus