Ich mochte das Sauerstoff Aussehen von KDE SC 4. Ich schrieb ein Programm, um diese Symbole auf Windows anwenden. Das Programm ist in NSIS geschrieben und ist derzeit nahezu voll funktionsfähig. Die einzige Möglichkeit, Windows auf die Symboländerungen aufmerksam zu machen, besteht jedoch darin, explorer.exe zu löschen, den Symbolcache zu löschen und explorer.exe neu zu starten. SHChangeNotify
mit SHCNE_ASSOCCHANGED
scheint nicht in der Lage zu sein Windows auf die Änderungen des Symbols Systemsteuerung, des Symbols Arbeitsplatz usw. aufmerksam zu machen. Bitte schlagen Sie einen besseren, weniger brutalen Ansatz vor, um Windows auf diese Änderungen aufmerksam zu machen.Make Windows aktualisieren Symbol Cache
BEARBEITEN: Ich habe ein Programm namens Icon Tweaker gefunden, das scheint, dies zu tun, aber es ist geschlossen Quelle und so habe ich keine Ahnung, wie es das tut. (IconTweaker: http://www.crystalxp.net/galerie/en.id.83-icontweaker.html)
EDIT: Ich habe das funktioniert gut, dank der Antwort von Anders (siehe unten). Aber ich werde einfach hier meine Arbeits NSIS Code setzen, falls jemand anderes braucht es
ReadRegStr $0 HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size"
IntOp $0 $0 + 1
WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0
SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000
IntOp $0 $0 - 1
WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0
SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000
Das $ 0-Register verwendet wird, um den Shell Icon Size
Wert von HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics
zu speichern. Wir erhöhen dann den Wert und machen einen SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 100000, NULL)
, gefolgt von einem Dekrement und erneutem Senden.
EDIT: Als ein Bonus kann dies als ein Hack verwendet werden, um größere (Windows 7 Größe) Desktop-Icons auf Windows XP zu bekommen. verdoppeln einfach den Wert Shell Icon Size
und rufen SendMessage
(nicht über die zweite Änderung durchführen, die die Größe wieder herstellt)
neu zu starten ich ein ähnliches Problem in einem C# Programm.Hast du das funktioniert? –
Ja. Der oben angegebene Code (NSIS-Code) hat es geschafft. –