随机换桌面壁纸工具开发

---恢复内容开始---

在使用c# 的过程中,忽然想到开发 一个可以随机换桌面壁纸的工具,当然,这样的工具已经有很多了,但是使用别人的尽管很完美但是不如使用自己的有意思。

界面如下:

很简单的功能, 点击上传图片,然后随机选中图片设置为桌面壁纸。
设置桌面壁纸的代码很简单,不过需要外部引用一个 user32.dll

 [DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
        public static extern int SystemParametersInfo(
          int uAction,
          int uParam,
          string lpvParam,
          int fuWinIni
          );
        /// <summary>
        /// 設置圖片桌面
        /// </summary>
        /// <param name="randomFileName"></param>
        public static void UpdateWindowsDesk(int randomFileName)
        {          
            var PicName = AppDomain.CurrentDomain.BaseDirectory + @"UpLoadImages\"+ randomFileName+".bmp";
          
            SystemParametersInfo(20, 0, PicName, 0x2);
        }

在此前提下,获取所需图片路径设置即可。由于是本地的windowsForm程序,图片文件夹直接就建在Bin文件夹下了。

上传图片:由于设置桌面壁纸图片格式需要使用bmp,所以上传后的图片需要统一改为bmp格式。

代码如下

 /// <summary>
        /// 上傳文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void UploadImage_Click(object sender, EventArgs e)
        {
            //初始化openFileDialog
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "请选择要上传的图片";
            ofd.Filter = "图像文件(*.jpg;*.gif;*.png)|*.jpg;*.gif;*.png";
            ofd.Multiselect = false;

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                string oldFilePath = ofd.FileName;
                int position = oldFilePath.LastIndexOf("\\");
                string OldfileName = oldFilePath.Substring(position + 1);
                string[] splitName = oldFilePath.Split('.');
                string ext = splitName[splitName.Length - 1];

                
                var index = 1;
            cc: string newName = index + ".bmp";// + ext;

                //判断根目录下是否含有指定文件夹,若没有则创建一个新的
                string path = AppDomain.CurrentDomain.BaseDirectory + "/UpLoadImages";
                DirectoryInfo di = new DirectoryInfo(path);
                if (!di.Exists)
                {
                    di.Create();
                }
                string newFilePath = AppDomain.CurrentDomain.BaseDirectory + "/UpLoadImages/" + newName;
                if (File.Exists(newFilePath))
                {
                    index = index + 1;
                    goto cc;
                }
                File.Copy(oldFilePath, newFilePath, false);
                Image img = Image.FromFile(newFilePath);
                //tureBox1.Image = img;
                MessageBox.Show("上传成功", "Tip");
            }
        }

在上传图片的时候命名上我取了个巧,使用数字直接命名,使用了goto语法来排除重名问题,

然后只要随机取文件名就可以设置随机壁纸了。

随机取文件名首先要判断当前文件夹下文件的数量,代码如下

 /// <summary>
        /// 讀取文件夾下文件數量
        /// </summary>
        /// <param name="dirInfo"></param>
        /// <returns></returns>
        public static int GetFilesCount(DirectoryInfo dirInfo)
        {

            int totalFile = 0;
            //totalFile += dirInfo.GetFiles().Length;//获取全部文件
            totalFile += dirInfo.GetFiles("*.bmp").Length;//获取某种格式
            foreach (System.IO.DirectoryInfo subdir in dirInfo.GetDirectories())
            {
                totalFile += GetFilesCount(subdir);
            }
            return totalFile;
        }

由于此文件夹下只有一种文件格式,所以直接判断一种格式数量即可,其他文件不影响此类文件。

由此,只要传入随机的文件名就可以设置随机壁纸了。

此项目非常简单,但是对于一个入门型程序员来说也可以算是值得一看的小项目了。

项目链接:https://pan.baidu.com/s/1og9pyLAP5ZExTkVP1eupMw

提取密码:g17l

---恢复内容结束---

转载于:https://www.cnblogs.com/widows/p/10901039.html

程序支持三种更换桌面壁纸方式:开机自动更换,定时更换,热键更换(热键可以设置) 只要您指定壁纸文件所在文件夹,程序将该文件夹下(含所有子文件夹)所有的JPEG、GIF、TIF、PNG、JPE、JPG、BMP文件自动随机设置为桌面壁纸,使您的桌面壁纸随时都在变化。如果文件夹下的文件发生变化,程序会自动监控到并进行更新。 1、开机自动更换壁纸,前提当然得要将该程序设置为开机自动运行(本程序自动最小化加入到系统托盘)。 2、定时更换壁纸,只要您设置了时间间隔并启用定时更换功能,即可定时更换。 3、手动更换,在任何界面下按热键键即可马上更换壁纸(默认热键为CTRL+ALT+P,可以在设置中更改)。 本程序系VB2008编写,可在windows XP 及Vista下运行(在XP下需要安装.NET Framework2.0组件,请从微软官方网站下载。 安装方法: 方法一:解压缩后,运行“自动更换壁程序.application”即可安装程序,安装完后会在开始菜单建立菜单。 方法二:解压缩后,可以不进行安装,直接运行“Application Files\自动更换壁程序_1_0_0_2\自动更换壁程序.exe”即可,此时不会在开始菜单建立程序组。 首次运行本程序时,会自动弹出设置窗口,要求您指定壁纸文件所在文件夹等选项。如果您要将程序设置为开机自动运行,请选中“设置为开机自动运行并更换壁纸”复选框,取消该复选框则可以取消开机自动运行。 如果您对本程序有何建议或意见,请与本人联系 姓名:游平 地址:湖南省 株洲市 215信箱 财务处 邮编:412002 邮箱:myyouping@hotmail.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值