デスクトップ上のドンバスアリーナ





2012年のユーロを見越して、Donbass Arenaのウェブカメラからの画像をデスクトップにインストールするプログラムを作成することにしました。



アルゴリズムは非常に単純で、わずかなポイントで構成されています。

  1. Windowsが現在のデスクトップイメージを保存するファイルへのパスを取得します。
  2. サイトから画像をダウンロードし、パスの最初のステップで受信したとおりに保存します。
  3. デスクトップイメージを更新するコマンドを提供します。




「HKEY_CURRENT_USER \ Control Panel \ Desktop」キーの「Wallpaper」パラメータを読み取ることにより、現在のデスクトップイメージのファイルへのパスをレジストリから取得できます。



String value = ""; try { RegistryKey hkey = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", false); value = (String) hkey.GetValue("Wallpaper"); hkey.Close(); } catch (Exception) { value = ""; }
      
      





値には、「C:\ Users \%username%\ AppData \ Roaming \ Microsoft \ Windows \ Themes \ TranscodedWallpaper.jpg」のようなものが格納されます



C#を使用する2番目のステップは、2行で実装できます。

 WebClient client = new WebClient(); client.DownloadFile(fromUrl, pathToFile);
      
      





fromUrlのファイルは、指定されたpathToFileの場所にダウンロードされ、以前の場所があれば、それを問題なく置き換えます。



3番目のステップでは、少し手を加える必要がありました。 WinAPIでデスクトップイメージを更新するコマンドは次のようになります。

 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, NULL, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
      
      





しかし、私は.NETツールを使用してこのコマンドを呼び出す方法を知りませんでしたが、Alexander Klimovの本ではかなり長い間、これが可能であることがわかりました。 pinvoke.netのウェブサイトは私の助けになり、この簡単なコードを書くのを助けました:



 public static void updateWallpaper() { SystemParametersInfo(SPI.SETDESKWALLPAPER, 0, null, SPIF.SENDCHANGE | SPIF.UPDATEINIFILE); } [DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SystemParametersInfo(SPI uiAction, uint uiParam, String pvParam, SPIF fWinIni); private enum SPI { SETDESKWALLPAPER = 0x0014 } private enum SPIF { UPDATEINIFILE = 0x01, SENDCHANGE = 0x02 }
      
      







残りの時間はインターフェースに費やされました:





まとめ


プログラムはトレイにハングアップし、 容赦なくトラフィックを消費し、デスクトップを更新します。



ソースはここからダウンロードでき、プログラム自体はここからダウンロードできます

動作させるには、.NET Framework 2.0以降が必要です。



ご清聴ありがとうございました!



All Articles