码迷,mamicode.com
首页 > Windows程序 > 详细

[C#源码]自动更改桌面背景

时间:2015-05-15 17:20:07      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

操作代码:ChangeDesktop.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;

namespace ChangeDesktop
{
    public partial class ChangeDesktop : Form
    {
        //图片路径
        string ImgDir = "";
        //间隔时间
        int Speed = 1000 * 30;
        //图片数组
        string[] ImgPath;
        //当前图片索引
        int ImgIndex = 0;

        public ChangeDesktop()
        {
            InitializeComponent();
        }

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);

        private void btnChImgDir_Click(object sender, EventArgs e)
        {
            if (fldBrower.ShowDialog() == DialogResult.OK)
            {
                if (Directory.Exists(fldBrower.SelectedPath))
                {
                    this.ImgDir = fldBrower.SelectedPath;
                    this.lblMsg.Text = "路径: " + this.ImgDir;
                    this.txtChImgDir.Text = this.ImgDir;

                    //把路径读进数组
                    string[] FileInfos = Directory.GetFiles(this.ImgDir);
                    if (FileInfos.Length > 0)
                    {
                        string ImgPaths = "";
                        string[] FileName;
                        for (int i = 0; i < FileInfos.Length; i++)
                        {
                            FileName = FileInfos[i].Split(‘.‘);
                            //MessageBox.Show(FileInfos[i]);
                            if (FileName[1].ToLower() == "bmp" || FileName[1].ToLower() == "jpeg" || FileName[1].ToLower() == "gif" || FileName[1].ToLower() == "jpg")
                            {
                                ImgPaths += FileInfos[i] + ",";
                            }
                        }

                        ImgPaths = (ImgPaths.Length != 0 ? ImgPaths.Substring(0, ImgPaths.Length - 1) : "");

                        if (ImgPaths.IndexOf(‘,‘) != -1)
                        {
                            ImgPath = ImgPaths.Split(‘,‘);
                        }
                        else if (ImgPaths.Length > this.ImgDir.Length)
                        {
                            ImgPath = new string[] { ImgPaths };
                        }
                        else
                        {
                            this.lblMsg.Text = "没有查找到任何可用作桌面背景的文件!";
                        }
                        this.lblMsg.Text += "\n共有文件" + this.ImgPath.Length + "个.";
                    }
                    else
                    {
                        this.lblMsg.Text = "没有查找到任何文件!";
                    }
                }
                else
                {
                    this.lblMsg.Text = "您并未选中任何文件夹!";
                }
            }
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            if (this.ImgIndex < this.ImgPath.Length)
            {
                string[] tmp = this.ImgPath[this.ImgIndex].Split(‘.‘);
                string imgPath;
                if (tmp[1].ToLower() != "bmp")
                {
                    Bitmap bmp = new Bitmap(this.ImgPath[this.ImgIndex]);
                    imgPath = tmp[0] + ".bmp";
                    bmp.Save(imgPath,System.Drawing.Imaging.ImageFormat.Bmp);
                }
                else
                {
                    imgPath = this.ImgPath[this.ImgIndex];
                }
                if (File.Exists(imgPath))
                {
                    int nResult;
                    nResult = SystemParametersInfo(20, 1, imgPath, 0x1 | 0x2);
                    if (nResult == 0)
                    {
                        this.lblMsg.Text = "文件路径:\n" + imgPath + "\n设置第" + (this.ImgIndex+1) + "/" + this.ImgPath.Length + "张图片,没有更新桌面背景成功!";
                    }
                    else
                    {
                        this.lblMsg.Text = "文件路径:\n" + imgPath + "\n设置第" + (this.ImgIndex+1) + "/" + this.ImgPath.Length + "张图片,正在更新桌面背景!";   
                    }
                }
                this.ImgIndex++;
            }
            else
            {
                this.ImgIndex = 0;
            }

        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            if (Regex.IsMatch(this.txtTime.Text, @"\d"))
            {
                this.Speed = 1000 * Convert.ToInt32(this.txtTime.Text);
            }

            if (Directory.Exists(this.txtChImgDir.Text) && this.timer.Enabled == false)
            {
                this.txtChImgDir.Enabled = false;
                this.btnChImgDir.Enabled = false;
                this.btnStart.Text = "停止";
                this.txtTime.Enabled = false;

                this.timer.Interval = this.Speed;
                this.timer.Enabled = true;
                this.timer.Start();
            }
            else if (this.btnStart.Text == "停止" && this.timer.Enabled == true)
            {
                this.txtChImgDir.Enabled = true;
                this.btnChImgDir.Enabled = true;
                this.btnStart.Text = "开始";
                this.lblMsg.Text = "桌面背景更改已停止";
                this.txtTime.Enabled = true;

                this.timer.Enabled = false;
                this.timer.Stop();
            }
            else
            {
                this.lblMsg.Text = "没有选择相关的显示图片!";
            }
        }

        private void ChangeDesktop_Load(object sender, EventArgs e)
        {
            this.StartPosition = FormStartPosition.CenterParent;
        }

        void ChangeDesktop_SizeChanged(object sender, System.EventArgs e)
        {

            if (this.WindowState == FormWindowState.Normal || this.WindowState == FormWindowState.Maximized)
            {
                this.ShowInTaskbar = true;
                this.nfyDesktop.Visible = false;
            }
            else
            {
                this.ShowInTaskbar = false;
                this.nfyDesktop.Visible = true;
            }
        }

        private void nfyDesktop_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            this.WindowState = FormWindowState.Normal;
        }

        void cmuShow_Click(object sender, System.EventArgs e)
        {
            this.WindowState = FormWindowState.Normal;
        }


        void cmuExit_Click(object sender, System.EventArgs e)
        {
            this.Close();
        }

        private void cmuDisplay_Click(object sender, EventArgs e)
        {
            this.nfyDesktop.Visible = false;
        }
    }
}

Program.cs文件:

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace ChangeDesktop
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new ChangeDesktop());
        }
    }
}

有系统托盘,可隐藏起来在后台运行,很方便.

就是得要.net 2.0 的环境.

[C#源码]自动更改桌面背景

标签:

原文地址:http://www.cnblogs.com/xubangwen/p/4506325.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!