How to change windows wallpaper in C#

http://www.csharphelp.com/archives3/archive578.html
http://www.codeproject.com/KB/dotnet/SettingWallpaperDotNet.aspx

核心部分代码:
using System.Runtime.InteropServices;

        public class WinAPI
        {
            [DllImport("user32.dll", CharSet = CharSet.Auto)]
            public static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
            public const int SPI_SETDESKWALLPAPER = 20;
            public const int SPIF_SENDCHANGE = 0x2;
            public const int SPIF_UPDATEINIFILE = 0x01;

        }

         public void changeWallpaper(string path)
        {
            Microsoft.Win32.RegistryKey rkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop",true);
            try
            {

                if (rkey != null)
                {
                    string currentWallpaper = rkey.GetValue(@"Wallpaper") as string;
                    if (currentWallpaper != null)
                    {
                        //key exists;
                        //rkey.SetValue(@"Wallpaper", textBox1.Text);
                        rkey.SetValue(@"WallpaperStyle", 1.ToString());
                        rkey.SetValue(@"TileWallpaper", 0.ToString());
                        string fileName = path;
                        if (fileName.ToLower().EndsWith(@".jpg"))
                        {
                            fileName = jepg2bmp(fileName);
                        }
                        //check file exists;
                        int nResult = WinAPI.SystemParametersInfo(WinAPI.SPI_SETDESKWALLPAPER, 0, fileName, WinAPI.SPIF_SENDCHANGE | WinAPI.SPIF_UPDATEINIFILE);
                        Console.WriteLine(nResult);
                    }
                }
            }
            catch { }
        }
posted @ 2008-01-31 00:17  magicdlf  阅读(422)  评论(0编辑  收藏  举报