ふと、C#で壁紙を変更することはできないのかと思い、調べてしました。API関数を使うしかないようです。
SystemParametersInfo関数を使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO; using System.Diagnostics; public partial class Form1 : Form { uint SPI_SETDESKWALLPAPER = 20; uint SPIF_UPDATEINIFILE = 1; uint SPIF_SENDWININICHANGE = 2; uint SPI_GETDESKWALLPAPER = 0x73; int MAX_PATH = 260; [DllImport("user32.dll")] private static extern bool SystemParametersInfo(uint uiAction, uint uiParam, StringBuilder pvParam, uint fWinIni); //壁紙を変える private void button1_Click(object sender, EventArgs e) { //壁紙のパス StringBuilder sb = new StringBuilder("c:\\abc.bmp"); SystemParametersInfo(SPI_SETDESKWALLPAPER, (uint)sb.Length, sb, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); } //壁紙のパスを取得する private void button2_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(MAX_PATH); SystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, sb, 0); string filePath = sb.ToString(); // これが壁紙のファイルのパス } //壁紙のファイルがあるフォルダをオープンする private void button3_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(MAX_PATH); SystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, sb, 0); string filePath = sb.ToString(); if(File.Exists(filePath)) { FileInfo info = new FileInfo(filePath); Process.Start(info.DirectoryName); } } } |
インターネットをしているとき、写真を右クリックして[名前をつけて画像を保存]のつもりが、[デスクトップの背景に設定]をクリックしてしまうことがあります。壁紙は変更できますが、間違って壁紙に設定してしまったファイルはパソコンのどこかに残ります。
上の方法を知っていればどこに保存されるかわかるので、削除(=証拠隠滅)もできます。