使用C++/CLI开发自动获取Windows锁屏壁纸的小工具

Windows锁屏壁纸

Windows10目前都会默认使用锁屏壁纸,有时候会有喜欢的图片出现,虽然可以手工保存下来,
方法也很简单,但如果每次都要手工处理,那就会很麻烦。
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++/WinRT的推出,更是黄花中的黄花,几乎没有人去用了。但是作为C++和.net的结合的技术,对于C++开发者来说,可以方便的整合C++代码和.NET的强大功能,还是很有用处的。比如在这个小工具中可以使用WinForm替代MFC开发界面,效率真是不知高到哪里去了。

当然这里用C++/CLI完全没有必要,直接用C#会更简单。
为了练习,可以感受一下C++用.net的便捷性,也可以学习一下CLI的一些特殊语法和用法。
实现的基本思路是:

  • 用WinForm实现设定界面
  • 用NotifyIcon实现系统托盘
  • 用FileSystemWatcher检测文件夹的变化(图片文件新增事件检测)
  • 用Image判断新增文件是否为图片、以及图片的大小和横、竖选择

代码

代码本身很简单,已经放到github上,可以下载。

界面

设定界面
在这里插入图片描述

说明

一般情况下只需要设置一下复制目录,点击[Start Monitor]即可。

  • 监测目录默认设置为锁屏壁纸所在目录,一般不需要修改,当然可以手工更改
  • 当程序运行后,如果有新锁屏壁纸出现,就可以根据用户的要求(大小、横屏、竖屏)等将符合要求的图片复制到指定目录
  • 如果设置了自动启动,会在电脑启动后就自动运行
  • 点击Minimize后,程序缩小到系统托盘,双击托盘图标或右键菜单可再次显示设定界面
  • 右键点击系统托盘图标,在菜单出选择退出即可退出程序
  • 抓取到的图片数(如果有)会显示在界面下方,并且会弹出windows气泡进行提示
  • 复制目录需要事先建好,如果设定成为桌面壁纸目录,就可以实现将锁屏壁纸当做桌面壁纸的自动化

抓取结果

在这里插入图片描述
简单、好用。

zip下载

不愿意自己编译的朋友,可以直接下载下面的zip文件,解开双击exe即可直接使用。
(需要安装.net framework 4.0以上)
https://download.csdn.net/download/ydogg/11975205

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章