QT/windows桌面动态壁纸代码实现

前言

今天突然想换桌面的壁纸 想换个动态,网上那些桌面壁纸软件不是收费就是广告一大堆,所以决定自己写一个,看到github上有这个代码于是自己动手参照修改了一下

这是他的git地址 https://github.com/Masterlong-Dragon/VideoWallpaper/tree/master

功能
  1.  在支持视频,gif,网页基础上支持图片(.png .jpg)
  2. mp4视频需要安装LAVFilters解码器(在我的资源列表里有可直接下载)
  3. qt(msvc2017)需要装有webEngine,只使用视频和gif,效果也是很赞
  4. 把qt窗口渲染在桌面窗口下面
  5. 添加了托盘程序功能
 
代码实现

注意:这里只是重点代码展示 具体工程可在我资源文件下载;

 一: 首先获取windowS的窗口句柄 如下图:

这里会看到在获取窗口句柄之前有一个发送消息,我们看一下怎么实现:

附上参考连接:https://www.codeproject.com/articles/856020/draw-behind-desktop-icons-in-windows

为什么有这一步呢 主要是当您更改桌面壁纸时,会在保存 windowsICON() 的实例和桌面管理器之间创建一个新窗口。WorkerW WorkerW SysListView32

我拿起那个新窗口的手柄,把它放到我的测试程序中,它终于能够在桌面图标后面绘制,就在墙纸的正上方!WorkerW

一个问题仍然存在。当我关闭个性化对话框时,它删除了那个新窗口。WorkerW

我必须找到一种方法来触发此窗口的创建。WorkerW

Spy++ 将窗口报告为程序管理器的同级和子窗口,因此看起来是程序管理器创建的。我使用 Spy++ 为程序管理器打开了消息监控,并找到了我想要的内容。

单击更改桌面墙纸后,程序管理器会立即收到一堆消息。第一个是用户定义且未记录的消息。这在“最近”添加后散发着恶臭。

我扩展了测试程序,将这个用户定义的消息(0x052C)准确地发送到程序管理器。它完全符合我的希望。收到消息后,程序管理器将创建窗口。WorkerW

二:获取窗口句柄这个比较常见直接上代码:

三:自己建立关于图片,动图,视频,和html相关的类,如下图:

最终的实现 具体参见详细代码 代码工程在我的资源文件中可下载;

在mianwindow中的核心实现如下:

好了到这一步基本的功能算是完成了 但是具体类的实现需要自己去写 此处并没有一一展示,

提供几个下载桌面背景图的免费网站:


极简壁纸_海量电脑桌面壁纸美图_4K超高清_最潮壁纸网站 (zzzmh.cn)

手机壁纸大全-高清好看的图片,明星,性感美女图片大全 (3gbizhi.com)

世界著名的壁纸网站 电脑桌面壁纸 - WallHere 壁纸库

新桌布网-高清4K8K电脑桌面壁纸原图分享站 (xinzhuobu.com)

好了以上就分享到这啦 

源代码工程看这里

关注我在我的资源文件里可直接下载,源码里面如下文件里面包含测试壁纸和LAVFilters解码器

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值