大家好!
作为一个 C# 新手,完成了我的第一个真正有用的个人项目:Wallpaper Switcher (壁纸切换器),并已开源。
- 项目地址: WallpaperSwitcher
- 下载 (Releases): releases
- (知乎详细开发过程与思考)
一句话介绍: 一个基于 WinForms 开发的轻量级工具,专注于快速、方便地管理和切换静态壁纸。支持 Windows 8/10/11 (.NET 9)。
核心痛点 & 为什么做这个?
- 曾是 Wallpaper Engine 用户,但主要用静态壁纸。
- WE 对静态壁纸管理稍显臃肿,迁移配置麻烦。
- 动态壁纸有功耗,切换窗口时偶尔卡顿。
- 需要更轻量、专注、易迁移的静态壁纸切换方案。
主要功能亮点:
- 文件夹管理:轻松添加/删除/切换壁纸源文件夹。
- 一键切换:按钮或热键立即切换壁纸/文件夹。
- 全局热键:后台运行,支持自定义热键(仅运行时有效)。
- 系统托盘常驻:关闭即最小化到托盘,支持热键必需。
- 开机自启。
-
两种切换模式:
Native:用系统幻灯片,流畅但间隔受限。Custom:直接 API 调用,切换更快更即时。
- 简洁设置界面。
技术选型与开发亮点:
- WinForms:快速验证想法,学习曲线低,小工具高效可靠。(新手友好)
- 架构:
Core(核心逻辑库) +Desktop(WinForms UI) 分离。核心逻辑封装良好,为未来可能的 UI 迁移( WPF/WinUI/Avalonia )留有余地。 -
与 Win32 API 交互:
- 使用
CsWin32(强烈推荐!):基于源生成器,自动生成精确 P/Invoke 签名,大幅简化代码(壁纸设置、热键注册、启动项管理),提升安全性和正确性。 - 从
DllImport迁移到更现代的LibraryImport(源生成)。
- 使用
- UI 美化小插曲:设计器代码经 AI 美化后,VS 设计器预览失效,手动维护代码。接受此代价换取更好视觉效果。
获取与使用:
- 绿色免安装!下载 Releases 中的
WallpaperSwitcher.exe(单文件,首次运行慢) 或WallpaperSwitcher.zip(解压运行bin\WallpaperSwitcher.exe,推荐)。 - 详见 GitHub README 。
期待你的反馈! 作为第一个完整的 C# 实用项目,深知代码和设计必有不足。非常欢迎:
- Bug 报告
- 功能/UI/UX/代码/性能改进建议
- 技术实现细节讨论 (WinForms, CsWin32, API 调用等)
- 单纯的使用交流
请在 GitHub Issues/PR 或 本帖回复 中提出!你的反馈是宝贵的学习机会。
希望这个小工具也能为你带来便利!
(文章用 Deepseek 进行了优化,本人文采不好,内容是自己写的只不过让 AI 润色了一下,见谅)