想要让你的桌面动起来,确实非常酷炫!使用其他软件可能会遇到收费或下载问题,而通过c#开发一个windows动态桌面程序则是一个不错的选择。让我们一步步来看看如何实现这个目标。
首先,我们需要使用Windows窗体查看工具Spy++来查看Windows桌面,如图所示,我们需要将我们的窗体放在第二个WorkerW下。

接下来,我们使用Visual Studio创建一个Windows窗体应用程序。

在C#中,我们不能直接获取窗口控件的句柄,因为C#是托管语言,不直接支持低级别的Windows API函数。不过,我们可以使用P/Invoke(Platform Invocation Service)技术,通过它我们可以调用Windows API函数。
如果你想获取窗口的句柄,可以使用
FindWindow或
FindWindowEx函数,这些函数都在
user32.dll中。下面是一个简单的例子:

我们创建一个Utils类,实现查找窗口句柄所需的方法如下:


在窗体的Load方法中,我们可以直接调用
Utils.GetWorkerW()和
Utils.SetWinParent()两个方法来将窗体设置为桌面。现在桌面还是空的,如何让它动起来呢?一种方法是直接播放一个视频,添加一个Windows Media Player控件来播放视频。另一种方法是使用浏览器,在HTML5中使用video标签播放视频,或者使用CSS来制作特效,这样可玩性更高。
在NuGet中搜索并安装
Microsoft.Web.WebView2到项目中。Microsoft.Web.WebView2是一个允许你将Web技术(HTML、CSS和JavaScript)嵌入到本机应用中的控件。它使用Microsoft Edge作为呈现引擎来显示Web内容。WebView2可以让你在本机应用的不同部分嵌入Web代码,或在单个WebView实例中生成所有本机应用。使用WebView2,你可以快速创新Web开发并允许快速部署和迭代。代码共享可以增加跨多个平台的重用,而Microsoft提供支持并添加新功能,以帮助你固定版本分布并选择在应用中打包特定版本的Chromium位。你还可以使用WebView2来添加Web组件到应用中。要开始使用WebView2控件生成和测试应用,你需要安装WebView2 SDK。
在Windows 11或Windows 10中已经内置了Edge浏览器,但并不是每个人的电脑都有,我们最好将它放在我们的项目中。从官网下载
Microsoft.Web.WebView2.FixedVersionRuntime.119.0.2151.58.x86,初始化项目并设置路径,我放在WebView,同时设置浏览器充满整个屏幕。
Countly 是一个实时的、开源的移动分析应用,通过收集来自手机的数据,并将这些数据通过可视化效果展示出来以分析移动应用的使用和最终用户的行为。截至2019年,支持超过2500个网站,16000个移动应用程序和多个桌面应用程序。它从移动,桌面,Web收集数据包括Apple Watch,TvOS和其他互联网连接设备的应用程序,并将这些信息可视化以分析应用程序使用情况和最终用户行为。

接下来设置访问本地HTML文件即可。

编写一个
index.html文件,效果如图所示:使用video播放
bg.mp4视频文件,在右上角显示一个3D时钟。


这种桌面的最终效果如下:

现在需要优化的方面还有很多,不能实时切换,因为在
index.html中我们写死了
bg.mp4视频地址。如果需要更换喜欢的视频作为壁纸,必须更换
bg.mp4,然后使用命令行执行
taskkill /f /t /im WindWallpaper.exe,重新启动应用。如果需要更换,打开运行,输入
shell:startup,回车,也可以快速打开启动文件夹。创建一个启动的快捷方式,把快捷方式放到启动文件夹中,开机后就会自动启动。
由于我们使用浏览器作为窗口并播放视频,所以我们可以发挥想象力,使用CSS制作比较大气的时钟、日历、天气等信息,这就请各位大佬发挥想象力了。











