5

C# 编写一个小巧快速的 Windows 动态桌面软件

 2 years ago
source link: https://www.cnblogs.com/he55/p/15687219.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

C# 编写一个小巧快速的 Windows 动态桌面软件

开源自己前段时间使用 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+ 详细描写了在桌面图标下面绘制一个窗口的方法。我是参考了这个博客实现的这个功能。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK