使用C++/CLI开发Windows锁屏壁纸小工具
使用C++/CLI开发Windows锁屏壁纸取得小工具
Windows锁屏壁纸
Windows10目前都会默认使用锁屏壁纸,有时候会有喜欢的图片出现,虽然可以手工保存下来,但是步骤繁琐,操作非常麻烦。
C++/CLI
C++/CLI作为托管C++的升级,本就是比较生僻、少有人用的技术,随着它的后续C++/WinRT的推出,更是黄花中的黄花,几乎没有人去用了。但是作为C++和.net的结合的技术,对于C++开发者来说,可以方便的整合C++代码和.NET的强大功能,还是很有用处的。比如在这个小工具中可以使用WinForm替代MFC开发界面,效率真是不知高到哪里去了。
锁屏壁纸的获取方法
方法很简单,但如果每次都要手工处理,那就会很麻烦。
windows会定期从服务器获取图片,放到如下用户目录:
C:\Users\%username%\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets\
cw5n1h2txyewy是根据某种机制生成的,不同windows版本可能会变(不过现在win10的几个版本都没有变),但前面的部分总是固定的。
C:\Users\%username%\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_
其实每张锁屏图片都是有横、竖两个版本,windows每次会都取回再根据用户设备选择显示。
图片会保存为jpg格式,但是注意文件名是没有后缀的。
将这些文件复制出来,更改后缀名为jpg后就可以看到图片,该文件下还有一些辅助文件并不是图片,但功能不明,置之不理即可。一般图片都大于100K,可用文件大小做简单判断。
C++/CLI实现抓取锁屏壁纸工具
其实这里用C++/CLI完全没有必要,直接用C#会更简单。是为了练习,感受一下C++用.net的便捷性。
图片获取原理如上,实现的基本方法是:
- 用WinForm实现设定界面
- 用NotifyIcon实现系统托盘
- 用FileSystemWatcher检测文件夹的变化(图片文件新增事件检测)
- 用Image判断新增文件是否为图片、以及图片的大小和横、竖选择
代码
代码本身很简单,可以从github下载。
界面说明
设定界面
一般情况下只需要设置一下复制目录,点击[Start Monitor]即可。
- 监测目录默认设置为锁屏壁纸所在目录,一般不需要修改,当然可以手工更改
- 当程序运行后,如果有新锁屏壁纸出现,就可以根据用户的要求(大小、横屏、竖屏)等将符合要求的图片复制到指定目录
- 如果设置了自动启动,会在电脑启动后就自动运行
- 点击Minimize后,程序缩小到系统托盘,双击托盘图标或右键菜单可再次显示设定界面
- 右键点击系统托盘图标,在菜单出选择退出即可退出程序
- 抓取到的图片数(如果有)会显示在界面下方,并且会弹出windows气泡进行提示
- 复制目录需要事先建好,如果设定成为桌面壁纸目录,就可以实现将锁屏壁纸当做桌面壁纸的自动化
抓取效果
简单、好用。
zip下载
不愿意自己编译的朋友,可以直接下载下面的zip文件,解开双击exe即可直接使用。
(需要安装.net framework 4.0以上)
上一篇: LoadRunner之VuGen事务
下一篇: 让电脑不被锁屏的方法,亲测有效