TightVNC serverにて接続時に壁紙を隠す機能(Hide desktop wallpaper)、接続時に壁紙を無効にし、切断時には無効にした壁紙を復元という単純な実装。
1枚絵の単純な壁紙なら問題ないのだけど、Windows8から使えるモニタごとに個別の壁紙を設定できる機能を利用していると期待通りに復旧されず悲しいことに。
昔ながらの API(SystemParametersInfo/SPI_SETDESKWALLPAPER/SPI_GETDESKWALLPAPER)を使って壁紙の無効/有効を切り替えているのが原因なので新しい API(IDesktopWallpaper)を使うパッチを作ってみた。