C# 替换桌面背景图片

做这个纯属和郁闷,win7家庭普通版的电脑背景图片居然不能动态切换。去哦一气之下就做了这个

public FrmpictureBox()
        {
            InitializeComponent();
            downbingimage();
        }

        /// <summary>  
        /// 返回指定目录下所有文件信息  
        /// </summary>  
        /// <param name="strDirectory">目录字符串</param>  
        /// <returns></returns>  
        public List<FileInfo> GetAllFilesInDirectory(string strDirectory)
        {
            List<FileInfo> listFiles = new List<FileInfo>(); //保存所有的文件信息  
            DirectoryInfo directory = new DirectoryInfo(strDirectory);
            DirectoryInfo[] directoryArray = directory.GetDirectories();
            FileInfo[] fileInfoArray = directory.GetFiles();
            if (fileInfoArray.Length > 0)
            {
                //string extension = System.IO.Path.GetExtension(fileInfoArray.ToString());
                //if (extension == ".jpg")
                //{
                listFiles.AddRange(fileInfoArray);
                //}
            }
            foreach (DirectoryInfo _directoryInfo in directoryArray)
            {
                DirectoryInfo directoryA = new DirectoryInfo(_directoryInfo.FullName);
                DirectoryInfo[] directoryArrayA = directoryA.GetDirectories();
                FileInfo[] fileInfoArrayA = directoryA.GetFiles();
                if (fileInfoArrayA.Length > 0)
                {
                    listFiles.AddRange(fileInfoArrayA);
                }
                GetAllFilesInDirectory(_directoryInfo.FullName);//递归遍历  
            }

            return listFiles;
        }
        /// <summary>
        /// 根据日期获取路径
        /// </summary>
        private void downbingimage()
        {
            string week = DateTime.Now.DayOfWeek.ToString();
            int imgpath=0;
            //Monday——星期一
            //星期二Tuesday
            //星期三Wednesday
            //星期四Thursday
            //星期五Friday
            //星期六Saturday
            //星期日Sunday

            switch(week)
            {
                case "Monday":
                    imgpath=1;
                    break;
                case "Tuesday":
                    imgpath = 2;
                    break;
                case "Wednesday":
                    imgpath = 3;
                    break;
                case "Thursday":
                    imgpath = 4;
                    break;
                case "Friday":
                    imgpath = 5;
                    break;
                case "Saturday":
                    imgpath = 6;
                    break;
                case "Sunday":
                    imgpath = 7;
                    break;
            }
           
            string locurl = "";

            locurl = Path.Combine(Directory.GetCurrentDirectory(), "im" + imgpath + ".jpg");
            pictureBox1.Image = Image.FromFile(locurl);

            setbackground(locurl);

        }
        /// <summary>
        /// 设置电脑背景图片
        /// </summary>
        /// <param name="strSavePath"></param>
        private void setbackground(string strSavePath)
        {

            //设置墙纸显示方式
            RegistryKey myRegKey = Registry.CurrentUser.OpenSubKey(@"Control Panel/desktop", true);

            myRegKey.SetValue("TileWallpaper", "0");//0 居中 1  平铺 默认
            myRegKey.SetValue("WallpaperStyle", "0");//2 拉伸
            this.label1.Text = "当前模式:居中";
            this.label2.Text = "更改配置文件config.xml可在下次启动时改变模式";

            //关闭该项,并将改动保存到磁盘
            myRegKey.Close();

            //设置墙纸
            string strPathBmp = Directory.GetCurrentDirectory() + "im1.jpg";

            System.Drawing.Bitmap bm = new System.Drawing.Bitmap(strSavePath);
            bm.Save(strPathBmp, System.Drawing.Imaging.ImageFormat.Bmp);//把jpg转成bmp
            SystemParametersInfo(20, 1, strPathBmp, 1);//SPI_SETDESKWALLPAPER

        }

        /// <summary>
        /// 调用电脑底层的接口
        /// </summary>
        /// <param name="uAction"></param>
        /// <param name="uParam"></param>
        /// <param name="lpvParam">图片的路径</param>
        /// <param name="fuWinIni"></param>
        /// <returns></returns>
        /// uAction Long,指定要设置的参数。参考uAction常数表
        ///uParam Long,参考uAction常数表
        ///
        ///lpvParam Any,按引用调用的Integer、Long和数据结构。
        ///
        ///fuWinIni 这个参数规定了在设置系统参数的时候,是否应更新用户设置参数
        ///
        ///下面是部分uAction参数,和使用它们的方法:
        ///
        ///参数    意义和使用方法  
        ///
        ///6    设置视窗的大小,SystemParametersInfo(6, 放大缩小值, P, 0),lpvParam为long型
        ///
        ///17    开关屏保程序,SystemParametersInfo(17, False, P, 1),uParam为布尔型
        ///
        ///13,24    改变桌面图标水平和垂直间距,uParam为间距值(像素),lpvParam为long型
        ///
        ///15    设置屏保等待时间,SystemParametersInfo(15, 秒数, P, 1),lpvParam为long型
        ///
        ///20    设置桌面背景墙纸,SystemParametersInfo(20, True, 图片路径, 1)
        ///
        ///93    开关鼠标轨迹,SystemParametersInfo(93, 数值, P, 1),uParam为False则关闭
        ///
        ///97    开关Ctrl+Alt+Del窗口,SystemParametersInfo(97, False, A, 0),uParam为布尔型
        [DllImport("user32.dll", EntryPoint = "SystemParametersInfoA")]
        static extern Int32 SystemParametersInfo(Int32 uAction, Int32 uParam, string lpvParam, Int32 fuWinIni);//lpvParam要设置成string
       
        /// <summary>
        ///时间控制
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Pricttimer_Tick(object sender, EventArgs e)
        {
            downbingimage();
        }

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值