C# 墙纸更换程序

Win7 自带的主题可以实现墙纸更换功能,同时也提供了定时更换功能. 附带效果 淡入淡出 如图

 

C#编写墙纸更换程序,如果使用Windows Api你会看不到那种 淡入淡出 的效果,它只会很突兀的就换了。google了一把,得到的结论是使用ActiveDesktop来实现。shlobj.cs 实现了 IActiveDesktop 使用 IActiveDesktop 接口设置墙纸只需要

 

                var ad = ActiveDesktop.GetActiveDesktop();
                ad.SetWallpaper(wallpaper.FileName, 0);
                ad.ApplyChanges(AD_Apply.ALL | AD_Apply.FORCE | AD_Apply.BUFFERED_REFRESH);
                Marshal.ReleaseComObject(ad);//没有这句则会没有效果

 

很简单。每次更换需要大概3秒左右的时间,这个有点难以理解。

上视频,看效果。

 

 

附程序结构类图

posted @ 2013-08-09 12:56  (大贤者模式)  阅读(1118)  评论(1编辑  收藏  举报