感觉让自己的桌面动起来非常屌,使用其他的软件不是这收费就是下载不了,没法设置。首先看windows窗体查看工具spy 查看windows桌面如图我们需要把我们的窗体,我们只要将我们的窗体放在第二WorkerW下即可。
接下来我们使用vs创建一个windfrom窗体应用程序。
先了解一下基础知识,在C#中,我们不能直接获取窗口控件的句柄,因为C#是托管语言,不直接支持低级别的Windows API函数。但是,我们可以使用一种叫做P/Invoke(Platform Invocation Service)的技术,通过它我们可以调用Windows API函数。
如果你想要获取窗口的句柄,可以使用 FindWindow
或者 FindWindowEx
函数,这些函数都在 user32.dll
中。下面是一个简单的例子:
我们创建一个Utils的类,实现查找窗口句柄需要需要的方法如下:
我们创建的窗体在Load方法中就可以直接调用:Utils.GetWorkerW()和Utils.SetWinParent()两个方法就可以将窗体设置为桌面。现在设置的桌面是什么东西都没有,那么怎么让它动起呢,一种是直接播放一个视频添加一个windows media player控件,直接播放视频。另外一种我们可以使用浏览器在使用h5中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。
在windows11或者windows10中已经有edfe浏览器,但是并不是每个人的电脑都有,我们最好把它放在我们项目中,在官网下载Microsoft.WebView2.FixedVersionRuntime.119.0.2151.58.x86,初始化项目设置所在路径,我放在WebView,同时设置浏览器充满整个屏幕。
接下来设置访问本地html文件即可。
编写一个index.html文件效果如图:使用video播放bg.mp4视频文件,在右上角显示一个3d时钟。
这种桌面后效果:
现在需要优化的地方还有很多,不能实时切换,因为在index.html我们写死了bg.mp4视频地址,需要找些喜欢的视频作为壁纸的话更换了bg.mp4,需要使用cmd 执行taskkill /f /t /im WindWallpaper.exe ,重新启动应用。如果需要的更换打开运行,输入shell:startup,回车,也可以快速打开启动文件夹。创建一个启动的快捷方式,把快捷方式放到启动文件夹,开机之后就会自动启动。
由于我们是使用浏览器作为窗口并播放视频,所以我们就可以发挥想象可以使用css写一下比较大气的时钟、日历、天气等信息,这个就请各位大佬发挥想象了。