KDESC4の酸素の外観が本当に気に入りました。これらのアイコンをウィンドウに適用するプログラムを作成しました。プログラムはNSISで書かれており、現在ほぼ完全に機能しています。ただし、Windowsにアイコンの変更を認識させる唯一の方法は、explorer.exeを強制終了し、アイコンキャッシュを削除して、explorer.exeを再生成することです。SHChangeNotify
withSHCNE_ASSOCCHANGED
は、コントロールパネルアイコンやマイコンピュータアイコンなどの変更をWindowsに認識させることができないようです。これらの変更をWindowsに認識させるための、より適切で残酷でないアプローチを提案してください。
編集:これを実行できるように見えるIcon Tweakerというプログラムを見つけましたが、これはクローズドソースであるため、どのように実行するのかわかりません。(IconTweaker:http ://www.crystalxp.net/galerie/en.id.83-icontweaker.html )
編集:アンダースの返事のおかげで、私はこれがうまく機能しています(以下を参照)。ただし、他の誰かが必要とする場合に備えて、作業中のNSISコードをここに配置します
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
Shell Icon Size
$ 0レジスタは、の値を格納するために使用されますHKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics
。次に、値をインクリメントしてaを実行しSendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 100000, NULL)
、続いてデクリメントして再送信します。
編集:ボーナスとして、これはWindows XPでより大きな(Windows 7サイズの)デスクトップアイコンを取得するためのハックとして使用できます。値を2倍にしShell Icon Size
て呼び出しますSendMessage
(サイズを復元する2番目の変更は実行しないでください)