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

操作代码: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 的环境.

时间: 2024-12-14 00:17:20

[C#源码]自动更改桌面背景的相关文章

用Enterprise Architect从源码自动生成类图

http://blog.csdn.net/zhouyong0/article/details/8281192 /*references:感谢资源分享者.info:简单记录如何通过工具从源码生成类图,便于分析代码结构,对源码阅读挺有用.*/ 看点开源代码学习下,本想找个代码查看方便点的工具,便于理清代码层次,结果发现了Enterprise Architect这一好工具,试用下来还挺方便的.功能上和Rational Rose大致是一类,用处很广,很多我都不懂,知道能画各种UML图,支持的源码语言类型

opencv:使用高斯混合模型(GMM)源码对视频进行背景差分法

非常感谢thefutureisour对opencv中c++版本的高斯混合模型的源代码完全注释,网上直接使用opencv源码编程的比较少,但是要想自己对高斯混合模型进行优化,或者要想在论文中对高斯混合模型有所创新,必须使用opencv源码来进行编程,而不仅仅是使用opencv的源码接口调用一下修改一下参数.自己废了些脑子提供给网友交流一把, 1. my_background_segm.hpp #include "opencv2/core/core.hpp" #include <li

ubuntu14.04自动更换桌面背景

作为一名同时喜欢windows 8.1和 ubuntu的用户,转入ubuntu系统后自然会觉得ubuntu的界面太过简陋,所有就在网上找到了一些自动更换壁纸的脚本命令来美化桌面,在此记录与分享. 以下是所用代码: 1 #!/bin/bash 2 3 #可用文件后缀名列表 4 readonly prefixs=("jpg" "jpeg" "png" "bmp") 5 6 #动态背景文件地址 7 #/usr/share/backg

2016年最牛逼的分类Android项目源码免费一次性打包下载!

之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被我分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不要一分钱!最看不起那些挂羊头卖狗的)你可以在本帖里面按Ctrl+F查找你需要的关键字,

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

转--2014年最新810多套android源码2.46GB免费一次性打包下载

转载自:http://www.eoeandroid.com/thread-497046-1-1.html 感谢该博客主人无私奉献~~ 下面的源码是从今年3月份开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被博主分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是博主一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不

ym——android源码大放送(实战开发必备)

文件夹 PATH 列表 卷序列号为 000A-8F50 E:. │  javaapk.com文件列表生成工具.bat │  使用说明.txt │  免费下载更多源码.url │  目录列表.txt │ ├─android web应用 │      jqmDemo_static.zip │      jqmMobileDemo-master.zip │      jqmMobileDemo1_1-master.zip │      Location1014.rar │ ├─anko │      

2014年最新720多套Android源码2.0GB免费一次性打包下载

之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年3月份开始不断整理源码区和其他网站上的android源码,目前总共有720套左右,根据实现的功能被我分成了100多个类,总共2G多,还在不断更新安卓源码.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不要一分钱!最看不起那些挂羊头卖狗的)你可以在本帖里面按Ctrl+F查找你

Monkey源码分析番外篇之WindowManager注入事件如何跳出进程间安全限制

在分析monkey源码的时候有些背景知识没有搞清楚,比如在看到monkey是使用windowmanager的injectKeyEvent方法注入事件的时候,心里就打了个疙瘩,这种方式不是只能在当前应用中注入事件吗?Google了下发现了国外一个大牛有留下蛛丝马迹描述这个问题,特意摘录下来并做相应部分的翻译,其他部分大家喜欢就看下,我就不翻译了. How it works Behind the scenes, Monkey uses several private interfaces to co