什么网站可以免费发布招聘信息,制作相册影集,微信客户端小程序,wordpress免费媒体库管理问题描述#xff1a;凝视桌面背景#xff0c;突感如果桌面背景是变化的像win7一样#xff0c;该多有意思啊。闹钟瞬间产生一个念头#xff0c;用C#写一个动态切换桌面背景的图片。如何实现这个想法了#xff0c;我思考了一会儿#xff0c;想到了如下的一些需要解决的问题…问题描述凝视桌面背景突感如果桌面背景是变化的像win7一样该多有意思啊。闹钟瞬间产生一个念头用C#写一个动态切换桌面背景的图片。如何实现这个想法了我思考了一会儿想到了如下的一些需要解决的问题 1以何种方式实现切换图片才能更符合客户的要求。 2C#使用什么技术来切换桌面的背景图片。 3如何存储和读取图片。 问题解决 1以何种方式呈现呢控制台winform?最后思考后决定用windows services来实现。因为它可以随windows启动而启动而且在用户不知不觉中改变默默无为做自己的事情简单。我以前没搞过windows services在网上search一下大致明白了其中的原理。于是想做一个简单的例子来实现。例子实现功能写一个服务定时提示一个message。代码很快就写完了可注册后总是不能启动服务也没啥提示信息。问题很犀利我Search一个小时才知道需要设置服务的属性允许服务与桌面交互。我设置了并且重启服务果然出现提示信息但这个问题总不能每次都让客户去解决吧在网上Search解决方案。关键代码如下 代码 private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e) { 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格式。代码如下 代码 #region System Innerface [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图片信息需要重启服务才能看到效果。关键代码如下 代码 protected override void OnStart(string[] args) { // 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