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

author author     2022-10-20     608

关键词:

开源自己前段时间使用 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截屏增强工具

半年前我开源了DreamScene2一个小而快并且功能强大的Windows动态桌面软件。有很多的人喜欢,这使我有了继续做开源的信心。这是我的第二个开源作品ScreenshotEx一个简单易用的Windows截屏增强工具。欢迎Star和Forkhttps://github.c 查看详情

c#脚本编写经验总结

...个“C#解释器”,当然它并不是解释执行的。完了以后,编写了一些C#脚本,在此期间发现了一些在IDE中编程会忽略的知识,下面一一列举一下。STAThread一次编写脚本时,发现FolderBrowserDialog好像失效了,不能正常弹出。后来发现... 查看详情

windows10动态壁纸

...设置打开浏览器打开百度首页搜索【动态桌面】,选择第一个,点击进入。win10电脑怎么设置动态壁纸桌面/动画桌面壁纸?2在首页点击【正式版下载】按钮,下载软件安装包。win10电脑怎么设置动态壁纸桌面/动画桌面壁纸?3下... 查看详情

我用c#编写的一个windows窗体程序怎么样打包成一个安装包?

我用C#编写的一个Windows窗体程序怎么样打包成一个安装包?并且用户可以选择按照路径。照下面的一步步做,就可以做成安装程序包了1新建安装部署项目打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(... 查看详情

windows10设置动态桌面壁纸

...们都知道,动态的壁纸显得比较高级,所以设置一个动态的壁纸也是非常炫酷的,不过,windows自带的那个设置动态壁纸的工具是需要缴费进行激活的,因此,作为穷苦人士的我只能采用别的方法了。。二... 查看详情

windows10设置动态桌面壁纸

...们都知道,动态的壁纸显得比较高级,所以设置一个动态的壁纸也是非常炫酷的,不过,windows自带的那个设置动态壁纸的工具是需要缴费进行激活的,因此,作为穷苦人士的我只能采用别的方法了。。二... 查看详情

在 Windows 10 上具有多个虚拟桌面的 C# UI 自动化 API

...天前从未使用过C#的人,我遇到了这个问题...我正在尝试编写一个“简单”程序,从目标窗口中抓取文本并将其显示在2x20VFD显示器上。我已经了解了如何使用MicrosoftUI自 查看详情

vue+tauri开发小巧的跨os桌面应用-股票体检

最近打算写一个用于股票体检的软件,比如股权质押比过高的股票不合格,ROE小于10的股票不合格,PE大于80的股票不合格等等等等,就像给人做体检一样给股票做个体检。也实现了一些按照技术指标、基本面自动选股,实盘买卖... 查看详情

c#编写的软件如何多开

c#编写的软件,本身不能多开,如何实现多开?可以多开的。不知道你具体指哪种情况。windows系统下,程序防止多开的几种常见方法:1)使用FindWindowAPI函数。通过查找窗口标题(或/和类名)来判断程序是否正在运行。如果找到了,... 查看详情

使用c#快速搭建rest服务

...便的对外提供RestApi接口,参考JavaSpringMVC框架使用C#语言编写了一个简易RestApi服务器框架,目前支持:-静态页面处理-GET/POST/PUT/DELETE请求-支持返回JSON-支持路由方法-支持自定义过滤器-服务器返回数据支持gzip压缩-支持Component变量... 查看详情

使用c#禁用Windows窗体桌面应用程序中的屏幕捕获[重复]

...布时间】:2017-09-0614:10:12【问题描述】:我正在用C#开发一个Windows桌面应用程序,我想禁用该应用程序的屏幕截图。我能得到这方面的建议吗?【问题讨论】:如前所述,不要尝试这个。使用变通方法或与 查看详情

在 Windows 窗体 c# 中绘制动态面板

...布时间】:2020-08-0421:30:21【问题描述】:您好,目前我有一个这样的Windows窗体:在这种形式中,我总是有十个面板,并根据我需要将它们隐藏起来。例如,如果我有一个包含7个值的对象列表,我会隐藏面板8、9、10,但这种方式... 查看详情

Qt:如何编写 Windows 桌面实用程序?

】Qt:如何编写Windows桌面实用程序?【英文标题】:Qt:HowtoWriteaWindowsDesktopUtility?【发布时间】:2020-04-0403:04:55【问题描述】:我已经使用Qt进行小部件开发了。这很简单。但是我怎样才能编写一个可以从Windows上的任何地方调用的... 查看详情

cobbler

...要自己一个一个的配置服务,有些人会觉得有些麻烦,就编写了cobbler程序,大大降低了复杂度。一、Cobbler1、Cobbler概念Cobbler是一个Linux服务器快速网络安装的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开... 查看详情

一个c#开发的开源的快速启动工具

欢迎加入 .Net编程学习小圈子 ,跟着学习路线,一起打卡交流学习。平常计算机安装软件比较多、或者工作涉及的文件比较多,很多人都会直接放在桌面,一方面不安全,还不容易查找,这时候我们往往&... 查看详情

Windows 窗体和 C# 中的动态自上而下的控件列表?

...题描述】:在我们的项目SharpWired中,我们正在尝试创建一个类似于Firefox或Safari中的下载窗口的下载组件。也就是说,一个自上而下的下载列表,它是包含进度条、按钮等的自定义控件。要求应该是一个列表,每行一个 查看详情

有啥方法可以从 Windows 10 中的 c# 桌面应用程序使用蓝牙 LE?

...题描述】:我在网上找到的所有关于蓝牙LE的东西都需要一个通用的windows应用程序,这完全不适合我。有没有办法在C#中 查看详情

windows任务栏设置

...靠左下“开始”键的旁边一般有3个快速启动按钮,其中一个是用来快速显示桌面的(点击即显示桌面)。我在使用中不小心把这个图标删了。哪位高手能指教一下如何将此图标恢复上去?谢谢了!在Windows操作系统中,任务栏(... 查看详情