开源自己前段时间使用 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 动态桌面软件的更多相关文章

  1. C# 编写 Windows 动态桌面软件实现(一)之桌面交互功能

    DreamScene2 1.3 版本已经发布了,现在支持鼠标和桌面交互功能.这个功能不会影响性能,基本不占用 CPU.这个功能让我对 Windows 消息机制有了更深入的理解,在这篇博客中我会详细介绍 ...

  2. Mac-连接Windows远程桌面软件

    链接:https://download.csdn.net/download/ab601026460/9885775 https://blog.csdn.net/ab601026460/article/ ...

  3. C# 编写一个简单易用的 Windows 截屏增强工具

    半年前我开源了 DreamScene2 一个小而快并且功能强大的 Windows 动态桌面软件.有很多的人喜欢,这使我有了继续做开源的信心.这是我的第二个开源作品 ScreenshotEx 一个简单易 ...

  4. PC-飞起来!我的Windows XP——五步快速优化Windows XP

    虽然Microsoft的 Vista已经发售了快一年,但国内大部分系统用户仍使用着目前堪称完美的Windows XP.与以往的Windows操作系统一样,新安装的Windows XP可能还不在最佳状态 ...

  5. Windows个人常用软件推荐

    一.必装软件 浏览器:Google chrome Google Chrome是一款可让您更快速.轻松且安全地使用网络的浏览器,它的设计超级简洁,使用起来更加方便,支持多标签浏览,同时也支持扩展插件.下 ...

  6. JAVA WEB快速入门之从编写一个基于SpringBoot+Mybatis快速创建的REST API项目了解SpringBoot、SpringMVC REST API、Mybatis等相关知识

    JAVA WEB快速入门系列之前的相关文章如下:(文章全部本人[梦在旅途原创],文中内容可能部份图片.代码参照网上资源) 第一篇:JAVA WEB快速入门之环境搭建 第二篇:JAVA WEB快速入门之 ...

  7. JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署

    接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...

  8. 快速构建Windows 8风格应用2-创建调试应用

    原文:快速构建Windows 8风格应用2-创建调试应用 本篇博文主要介绍的是创建应用时可以选择哪些模版,生成默认的Windows 8风格应用解决方案中含哪些文件,最后是如何调试Windows 8风格 ...

  9. Windows动态库学习心得

    最近在工作中需要给项目组其他成员提供调用函数,决心抛弃以前“拷贝头文件/源文件”的简陋方法,采用动态库的方式对自己开发的接口进行模块化管理.因之前一直没有机会从事Windows动态库的开发,现借助这个 ...

随机推荐

  1. 体验用yarp连接websocket

    前段时间一看yarp的仓库,wow,终于发布1.0版本了..net也升级到6版本了,之前一直只是用yarp做HTTP转发,今天刚好试试websocket 话不多说,直接开搞 配置集群 首先先配置集群信 ...

  2. [hdu7081]Pty loves book

    建立ac自动机,令$S_{x}$为以根到$x$的路径所构成的字符串以及$L_{x}=|S_{x}|,W_{x}=\sum_{1\le i\le m,t_{i}为S_{x}的后缀}w_{i}$,那么不难 ...

  3. 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  4. 学Web前端开发,选择培训学校是关键--青岛思途

    互联网+的提出,催生了Web前端开发行业更大的就业空间,其行业热度也正呈爆炸式增长.专业人才供不应求导致了从业者薪资的居高不下,一般来说Web前端工程师的年薪可达15w以上,工作3~5年后通常可达到1 ...

  5. 使用 vue-property-decorator 用法总结

    Vue + TypeScript 使用 vue-property-decorator 用法总结 简介 要使vue支持ts写法,我们需要用到vue-property-decorator,这个组件完全依赖 ...

  6. nginx_access_log的格式设置

    log_format <NAME> <Strin­­­g>; 关键字 格式标签 日志格式 关键字:其中关键字error_log不能改变 格式标签:格式标签是给一套日志格式设置一 ...

  7. scrapy安装及入门使用

    scrapy安装及入门使用 安装 pip3.7 install Scrapy 输入scrapy命令查看是否安装成功 J-pro:myproject will$ scrapy Scrapy 2.1.0 ...

  8. R语言与医学统计图形-【21】ggplot2标题

    ggplot2绘图系统--标题 在期刊杂志中,需要设置的图形标题并不多. 除了图形标题,还有坐标轴标题(标签).图例标题.脚注等. 标题函数:ggtitle,labs 坐标轴标题函数:xlab,yla ...

  9. Linux—su命令和su -命令的差别(切换登录账号)

    1.普通用户切换到root用户,命令su或su - 本人以前一直习惯直接使用root,很少使用su,前几天才发现su与su -命令是有着本质区别的! 大部分Linux发行版的默认账户是普通用户,而更改 ...

  10. Perl哈希%hash

    哈希是 key/value 键/值对的集合. Perl中哈希变量以百分号 (%) 标记开始. 访问哈希元素格式:${key}. 以下是一个简单的哈希实例: 实例 #!/usr/bin/perl %da ...