2022-05-14 23:23
#软件 #Windows我的一直在用 Win10 电脑作为主力开发设备,Win10 系统比较新的版本有一项功能我非常喜欢,那就是“Windows 聚焦”。这项功能可以让你在锁屏界面使用一系列精美的摄影作品,这些精美的图片拍摄于全球各地,让你足不出户领略到各地的人文与自然风光。每天早上打开电脑,看到如此的美景,整个人一天的心情都好起来了。下面是一张随便挑选的 Windows 聚焦图片,可以感受一下(已压缩,实际的图片会更加清晰):
但遗憾的是,Windows 聚焦图片无法直接设置为桌面壁纸(仅对早期的 Win10 而言,新版本 Win11 已经可以设置)。在查询了一些资料后,我了解到 Windows 聚焦的图片是直接保存在本地目录下的,随着用户点击锁屏界面的喜欢与否选项,这些图片会被自动更新。有了这些基础知识后,我就想着自己开发一款小软件来实现将 Windows 聚焦图片设置为桌面壁纸的功能。
虽然目前只有我一个用户,但流程还是要走的。这款小软件应该有如下需求:
Windows API
将图片设置为桌面壁纸有了需求后,如何在能满足需求且快速的情况下实现这些功能,对于技术选型,有如下两种考虑:
优点:方便上手,我很熟悉前端相关技术,设置壁纸也有第三方库
缺点:打包后的软件体积过大,且此软件只需要在 Windows 上运行,无需跨平台,引入 Electron 过于复杂
优点:运行效率高,打包后的软件体积小
缺点:我本人对这些技术不是很熟悉,需要学习,耗费较大的时间与精力
那么有没有既能快速实现功能,又能贴合原生 Window GUI 的开发方案呢?答案是有的,那就是使用自动化的脚本语言,例如 Auto Hotkey。之所以使用“例如”二字,原因是我本来决定用 Auto Hotkey 来实现这些功能,奈何其语法相当复杂,难以上手,最终选择了 AutoIt。我觉得 AutoIt 有一个相当出彩的地方:那就是它由官方或者社区开发者提供了大量的 UDFs(User Defined Functions),能解决各式各样的问题。AutoIt 的核心内容非常简洁,新手(例如我)能快速开发一些自动化脚本来实现功能,同时 UDF 可以抽象出各种现实问题的解决方案,这样又可以支撑起复杂度较高的应用,实在是高明。
Tidy.exe
程序整理代码SpotlightWallpaper 会根据图片的分辨率大小自动保存“横向”或者“纵向”的图片到用户主目录的“图片”文件夹下,这样不但有电脑端可用的壁纸资源,通过文件同步,我的手机和 iPad 上也能用上这些漂亮的壁纸图片,我还打算开发一款浏览器空白页的插件来在浏览器上展示它们,做到物尽其用。从一个小小的想法,到最后的作品,其中的距离,只有当你静下心来,才能慢慢跨越。