C# 编写一个小巧快速的 Windows 动态桌面软件
2021-12-14 13:36
826 查看
开源自己前段时间使用 C# 编写的 Windows 动态桌面软件,在接下来的博客我将描写一些技术细节和遇到的一些坑。这个软件可以把视频设置成桌面背景播放,不仅如此而且还可以把网页或一个网页文件设置成桌面背景播放。支持 .NET Framework 4.7.2 和 .NET Core 两个运行时编译,支持 Windows10/11 系统(支持 Windows8 以上系统,手里没有 Windows8 系统没有测试)。
欢迎 Star 和 Fork。GitHub: https://github.com/he55/DreamScene2
特性
- 支持视频播放(目前使用的 WPF 框架内置的 MediaElement 播放视频仅支持 .mp4, .mov 视频文件,后面增加其他播放引擎)
- 支持 URL 和网页文件
- 支持启动后自动播放
- 支持设置显示器
- 支持自动暂停播放
下一步
- GIF 和 APNG 播放
- Live2D 播放
- 使用鼠标和桌面交互
- 屏幕保护程序
- 更多视频格式
使用技术
使用到了 WinForms, WPF, WebView2, Native 等技术,各取其优点来实现项目功能
- WinForms: 创建菜单简单,方便处理 Windows 消息
- WPF: 使用了内置媒体播放功能,播放 .mp4 文件够了。其他播放引擎运行时太大
- WebView2: 和 CefSharp 比较 WebView2 有 Edge 加持不需要携带一个巨大的运行时,而且安装简单下载速度也快有微软 CDN 加速
- Native: C# P/Invoke 支持的很完善,但是如果需要调用大量 Windows API。还是使用 C++ 写比较简单,然后提供接口 C 接口给 C# 调用
动态桌面软件原理
如果能把一个窗口放在桌面背景桌面图标之间,然后在自己的这个窗口播放视频或者动画,桌面就有动态效果了。作者 Gerald Degeneve 的一篇博客 Draw Behind Desktop Icons in Windows 8+ 详细描写了在桌面图标下面绘制一个窗口的方法。我是参考了这个博客实现的这个功能。
相关文章推荐
- C# 编写 Windows 动态桌面软件实现(一)之桌面交互功能
- C#编写windows服务,多服务为什么只启动一个(ServiceBase.Run)
- C# 编写Windows服务实现开机启动一个程序
- 初学C# | 使用Windows窗体应用编写简单的计算器软件
- 如何使用windows bat编写一个快速启动工具
- c#怎么编写一个软件的帮助文档
- C#窗体-个人简历生成(自己设计并编写一个 Windows 应用程序,要求用到TextBox、GroupBox、RadioButton )
- 利用Timer控件【Timer(6.4.9)】编写C# Windows应用程序,设计一个如下效果电子时钟。
- 一个C#编写QQ接口软件--QQ协议
- 一个初学者C#编写帐号密码保存软件的思考过程
- 如何快速编写一个汇编软件
- 快速撑握C#知识点之编写一个C#程序
- 一个C#编写QQ接口软件--QQ协议(转)
- 快速撑握C#知识点之编写一个C#程序 推荐
- 快速撑握C#知识点之编写一个C#程序
- 编写一个C#Windows服务程序,定时从数据库中拿出记录发送邮件。
- 使用C#编写一个求解数独的小软件
- Notepad2:一个小巧,快速的替代微软记事本的软件
- C#编写Windows桌面应用程序使程序同时只能运行一个副本
- 怎么在Fedora linux 中快速安装 Windows 软件