[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 的环境.
[C#源码]自动更改桌面背景的更多相关文章
- Python 一键拉取Git分支源码自动解析并执行SQL语句
基于Python实现自动拉取Git分支源码自动解析并执行SQL语句 by:授客 QQ:1033553122 1.代码用途 开发过程中,研发人员会提交SQL更新脚本到Git源码库,然后测试负责去拉取这些 ...
- 用Enterprise Architect从源码自动生成类图
http://blog.csdn.net/zhouyong0/article/details/8281192 /*references:感谢资源分享者.info:简单记录如何通过工具从源码生成类图,便 ...
- mysql5.6源码自动安装脚本
将脚本与源码安装包放在同一目录下,执行脚本即可(执行脚本会使用yum安装依赖包) 安装完成之后,既可以使用mysql -uroot -p登录 脚本内容如下: [root@mysql src]# c ...
- GCC源码自动编译-python脚本
一.前言 目前因机器OS GCC版本太老,导致无法编译一些新版本软件,所以写了一个自动编译GCC的python脚本,操作系统是比较老的suse 10, 很多系统自动软件版本都很低,所以此脚本一般可适用 ...
- IDEA call Hierarchy 双击跳转源码后绿色选中背景不消失问题
1.版本,2019.2.2. 2.这个问题貌似是个bug,就是选中变色后会一直在,目前没有找到对应方法或者配置,如果你找到了,欢迎在评论中分享一下. 3.我这里只能先简单粗暴处理下,通过设置选中时不设 ...
- Python3实现Win10桌面背景自动切换
[本文出自天外归云的博客园] 得空写了个自动切换桌面背景图片的小程序.再不写python就要扔键盘了,对vue还有那么一点好感,天天php真是有够烦. 准备工作 准备个文件夹放在桌面上,平时看到什么高 ...
- 源码学习系列之SpringBoot自动配置(篇二)
源码学习系列之SpringBoot自动配置(篇二)之HttpEncodingAutoConfiguration 源码分析 继上一篇博客源码学习系列之SpringBoot自动配置(篇一)之后,本博客继续 ...
- SpringBoot源码学习1——SpringBoot自动装配源码解析+Spring如何处理配置类的
系列文章目录和关于我 一丶什么是SpringBoot自动装配 SpringBoot通过SPI的机制,在我们程序员引入一些starter之后,扫描外部引用 jar 包中的META-INF/spring. ...
- 转--2014年最新810多套android源码2.46GB免费一次性打包下载
转载自:http://www.eoeandroid.com/thread-497046-1-1.html 感谢该博客主人无私奉献~~ 下面的源码是从今年3月份开始不断整理源码区和其他网站上的安卓例子源 ...
随机推荐
- u
Atrrible /s/d –s –h u盘修复
- 字符识别OCR研究一(模板匹配&BP神经网络训练)
摘 要 在MATLAB环境下利用USB摄像头採集字符图像.读取一帧保存为图像.然后对读取保存的字符图像,灰度化.二值化,在此基础上做倾斜矫正.对矫正的图像进行滤波平滑处理,然后对字符区域进行提取切割出 ...
- bzoj5311: 贞鱼
还是年轻啊算的时候少乘一个4000被卡二分上界了...%%%%bright教我超级快速读D飞bzoj垃圾卡常数据 我们容易写出这样的DP方程:f[i][j]=f[k][j-1]+val(k+1,j) ...
- 在vs2017中创建Node.js项目
https://github.com/Microsoft/nodejstools/wiki/Projects 1. 安装vs2017的时候,需要勾选Node.js 2.新建项目的时候,选择其他语言,然 ...
- Oracle 10g 10.2.0.4的group by BUG |ORA-00979 not a GROUP BY expression|
乍看 ORA-00979 not a GROUP BY expression 这个提示估计很快能将其定位为SQL语句写得有问题,实际上有可能你遇到了一个Oracle的BUG,这个BUG常见于10.2. ...
- JForum论坛添加UEditor文本编辑器
在使用JForum论坛中发现论坛自带的文本编辑器不好用,不能上传图片,样式编辑也很麻烦,就想着把这个文本编辑器替换掉,我这里选用的是百度的开源富文本编辑器UEditor 替换后的效果图 替换方法如下 ...
- P3207 [HNOI2010]物品调度
传送门 完了题目看错了--还以为所有的\(x,y\)都要一样--结果题解都没看懂-- 先考虑如果已经求出了所有的\(pos\)要怎么办,那么我们可以把\(0\)也看做是一个箱子,然后最后每个箱子都在一 ...
- [Swift通天遁地]一、超级工具-(10)使用地图视图MKMapView的相机功能实现创建三维地图
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 分布式事务(三)mysql对XA协议的支持
系列目录 分布式事务(一)原理概览 分布式事务(二)JTA规范 分布式事务(三)mysql对XA协议的支持 分布式事务(四)简单样例 分布式事务(五)源码详解 分布式事务(六)总结提高 引子 从Mys ...
- 公司4:JrVue主题定制
JrVue是我们基于element重新封装的一套组件库; 具体组件使用方法可以mnote->研发小组查看; 这里我们定制了一套主题色, 具体变动如下: 1.主题色变动: mfront有蓝.紫. ...