C#实现动态桌面背景图片切换
问题描述:凝视桌面背景,突感如果桌面背景是变化的像win7一样,该多有意思啊。闹钟瞬间产生一个念头,用C#写一个动态切换桌面背景的图片。如何实现这个想法了,我思考了一会儿,想到了如下的一些需要解决的问题:
(1):以何种方式实现切换图片,才能更符合客户的要求。
(2):C#使用什么技术来切换桌面的背景图片。
(3):如何存储和读取图片。
问题解决:
(1):以何种方式呈现呢?控制台?winform?最后思考后,决定用windows services来实现。因为它可以随windows启动而启动,而且在用户不知不觉中改变,默默无为做自己的事情,简单。我以前没搞过windows services,在网上search一下,大致明白了其中的原理。于是想做一个简单的例子来实现。例子实现功能:写一个服务,定时提示一个message。代码很快就写完了,可注册后,总是不能启动服务,也没啥提示信息。问题很犀利,我Search一个小时,才知道需要设置服务的属性:允许服务与桌面交互。我设置了,并且重启服务,果然出现提示信息,但这个问题总不能每次都让客户去解决吧,在网上Search解决方案。关键代码如下:
{
ConnectionOptions coOptions = new ConnectionOptions();
coOptions.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope mgmtScope = new System.Management.ManagementScope(@"root\CIMV2", coOptions);
mgmtScope.Connect();
ManagementObject wmiService;
wmiService = new ManagementObject("Win32_Service.Name='" + this.serviceInstaller1.ServiceName + "'");
ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);
}
第一个问题总算解决了。
(2):如何切换图片,Search一下,似乎就一个办法,调用系统的API,不过图片只能是BMP格式。代码如下:
[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
public static extern int SystemParametersInfo(
int uAction,
int uParam,
string lpvParam,
int fuWinIni
);
#endregion
#region Timer Elapsed
private void dynamicTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (picIndex < PicturePath.Count)
{
SetDesktopPicture(PicturePath[picIndex].ToString());
picIndex += 1;
}
else
{
picIndex = 0;
SetDesktopPicture(PicturePath[picIndex].ToString());
}
}
#endregion
(3):怎么来存储和读取图片呢。我选择了用XML文件来存储。需要存储两个信息,一个是多长时间切换图片背景,二是图片的路径。在服务启动的时候我把图片路径存储在一个List中,如果更新了XML图片信息,需要重启服务才能看到效果。关键代码如下:
{
// TODO: 在此处添加代码以启动服务。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(XML_PATH);
XmlElement xmlEle = (XmlElement)xmlDoc.SelectSingleNode("paths");
timeInterval = int.Parse(xmlEle.GetAttribute("time").Trim());
foreach (XmlNode node in xmlDoc.SelectSingleNode("paths").ChildNodes)
{
PicturePath.Add(node.InnerText);
}
this.dynamicTimer.Interval = timeInterval;
this.dynamicTimer.Enabled = true;
picIndex = 0;
}
总结:关键问题都解决了,运行调试实现了自己的想法。程序还有很多不足之处,如:1)应该设置一个托盘程序来启动重启服务,提供一个用户界面来维护图片的路径和切换时间,我是用DOS命令来重启服务;2) 系统函数只能设置BMP格式的,应该实现用各种形式的图片,这个很容易搞定;3)应该搞一个安装包,大家用着也方便啊。
转载于:https://www.cnblogs.com/BlueWoods/archive/2010/03/10/1682829.html
C#实现动态桌面背景图片切换相关推荐
- C#实现动态桌面背景图片切换(续)
问题描述:昨天搞了一个自动切换桌面的小程序,用着不太方便.因为我每次添加新图片都是手动修改XML文件和重启服务,于是我搞了一个配置程序如下: 上面展示的功能,基本上实现了程序所需要的功能.其中涉及的知 ...
- 修改计算机桌面壁纸影响计算机考试吗,若何修改调换计算机桌面背景图片
<若何修改调换计算机桌面背景图片>由会员分享,可在线阅读,更多相关<若何修改调换计算机桌面背景图片(3页珍藏版)>请在技术文库上搜索. 1.韧耐距荤丢郧瞄宵汤隧匣龋侥撤东取滤傣 ...
- jQuery Backstretch动态设置背景图片插件
贴图 知乎:显著提升程序员身心健康和工作效率的装备有哪些? 笔记本: 1.银河舰队 PAVILION 15-bc011TX光暗影精灵2 2.顽石 -FL5900U7500超薄i7(性价比最高) ...
- Fedora15上实现桌面背景图片渐变
2019独角兽企业重金招聘Python工程师标准>>> 桌面背景图片渐变,在Ubuntu中很容易实现.Ubuntu默认就自带了几款渐变壁纸.但换到Fedora后,貌似没发现有自带的渐 ...
- 防仿百度图片背景色php,基于jQuery实现仿百度首页换肤背景图片切换代码_jquery...
不多说了,先给大家展示效果图,本文支持源码下载哦,需要的朋友可以直接下载使用,代码很简单哦- html代码: css代码: *{margin:0;padding:0} a{color:#fff; ma ...
- vue改变html的背景,vue动态改变背景图片demo分享
如下所示: #bag{ width: 200px; height: 500px; margin: 0 auto; background: url(img/piao11.jpg) center no-r ...
- win7自定义随机更换显示桌面背景图片
在网上看到了好几张漂亮的图片,都想作为桌面背景图片,随机更换,于是搜索方法,因为win7自带的主题有的就是随机更换背景的,所以想着自己是不是可以新建一个主题,也能实现那个效果. 果然,还是微软强悍- ...
- VUE动态变换背景图片的实现 +背景图片铺满+ 一般路由的配置
一 .动态变换背景图片的实现 代码如下: <template><div class="body" v-loading="loading" :s ...
- 为canvas画布动态设置背景图片
为canvas画布动态设置背景图片 关键是将canvas和img标签放到同一个盒子里,盒子设置相对位置,并且canvas和img需要设置相同的相对位置 <div class="list ...
最新文章
- lvs+keepalived+nginx+tomcat
- 【青少年编程(第27周)】报名考级的小朋友注意截止时间!
- 十年沉浮,用Python看创业公司消亡史
- 120. Triangle 三角形最小路径和
- 【十】推荐系统遇到知识图谱RippleNet
- 升级计算机方案,关于计算机升级方案
- 12001.linux应用程序之i2c编程
- Full details will be found in the appropriate container log 解决办法
- Jmeter初探之录制
- linux查看psd文件,ImageMagick PSD图形文件处理远程缓冲区溢出漏洞(CVE-2014-1947)
- 【Python-神经网络预测】
- mysql redo 结构_MySQL redo log 格式解析
- Yao‘s GC 的通信最优解:Half Gate
- 10.1 做一个全面发展的大学生——《逆袭大学》连载
- s7200cpu224xp手册_s7200cpu224xp模拟量转换
- thinkphp将名字按首字母进行排序
- redission疑难杂症大全
- docsify学习笔记
- 【第51篇】用于交通预测的时空交互动态图卷积网络
- 辐射发射测试软件,辐射发射(Radiated Emission)测试方法详解
热门文章
- 【朱-刘算法】【最小树形图】hdu6141 I am your Father!
- VR如何巧妙填补传统数据视觉化的漏洞
- 任正非迷茫的背后是华为在“治未病”
- 解决svn的working copy locked并且cleanup恢复不能的情况
- 大叔手记(17):大叔2011年读过的书及2012年即将要读的书
- Discuz! member.php xss bug
- Node - 异步IO和事件循环
- 时间复杂度与空间复杂度分析
- Git中.gitignore忽略文件(maven项目)
- 与Brian Goetz聊Java的数据类