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


    前言

    开源自己前段时间使用 C# 编写的 Windows 动态桌面软件,在接下来的博客我将描写一些技术细节和遇到的一些坑。

    这个软件可以把视频设置成桌面背景播放,不仅如此而且还可以把网页或一个网页文件设置成桌面背景播放。

    支持 .NET Framework 4.7.2 和 .NET Core 两个运行时编译,支持 Windows10/11 系统(支持 Windows8 以上系统,手里没有 Windows8 系统没有测试)。

    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+ 详细描写了在桌面图标下面绘制一个窗口的方法。

  • 相关阅读:
    D. Make Them Equal(dp + 范围优化 )
    shell之ipcrm命令
    Apache Log4j Server (CVE-2017-5645) 反序列化命令执行漏洞
    springboot网络安全考核平台设计毕业设计源码042335
    深度学习YOLOv4环境配置
    W5500-EVB-PICO进行MQTT连接订阅发布教程(十二)
    星际编码:Swifter.Json,.NET宇宙中的数据处理新星
    C++类与对象——封装
    2104. 子数组范围和
    图像分割 - 区域生长
  • 原文地址:https://blog.csdn.net/biyusr/article/details/125993266