网管小贾 / sysadm.cc
有一位名叫小旺的小伙伴,最近和女朋友在追一档综艺节目《一年一度喜剧大赛》。
这档节目播出以来,形式年轻化、多玩化,剧本也是脑洞频出、创意无限、极具特色,颇受时下年轻人的追捧。
其中就有这么一部被主创者自称为陷阱喜剧的小品《先生请出山》,在播出后突然网络上就爆火了。
这不,小旺和他女朋友也着了迷、上了瘾,问我能不能把这视频放到桌面上,这样不就又可以看又显得酷了?
有这么让人痴迷吗?
我还真有点不信哈,结果当我看了一遍那魔性的舞步和风*的走位后就再也出不来了!
嘿嘿,没错,被成功洗脑的我,现在也时常动不动就想模仿一下那舞步的动作。
现在大部分年轻人不抽烟不喝酒也就图点这些乐子了,理解理解!
我和小旺说,不是有不少动态桌面壁纸程序嘛,下载下来用就是了。
可我得到的回复是,这些软件不是收费的就是里面夹带私货的,都不怎么让人放心,问有没有靠谱点的方法。
也是哈,于是同样上头的我研究了好几天,最终自己动手成功将这魔性舞步视频当作了动态桌面壁纸!
在本文结尾有自制程序下载,免费安全可靠,不夹带任何私货哦~
实验平台Windows 10 (默认开启 Aero )
目标效果可以基本实现在桌面上播放视频,达到动态桌面的效果。
与此同时,不妨碍日常的操作,比如桌面图标的点击、移动等。
工具介绍欲善其工,必利其器,除了编程工具外,在正式开始了解原理之前,我们需要先请出“窗口句柄抓取工具”:Microsoft Spy 。
它是来自 Vistual Studio 的一个实用工具,可以提供系统的进程、线程、窗口及消息的图形视图。
当然如果你对此比较熟悉,也是可以用其他一些窗口句柄查看工具的。
不过如果你不太清楚什么是窗口句柄,那也没关系,我简单给你解释一哈,你大概了解了解就行。
首先我们要知道,在系统中窗口(或叫作窗体)是最常用最基本的容器载体,在窗口中会有很多各种各样不同的控件,它们都是用来操作系统功能或与用户互动的。
窗口很重要,那么我们如何管理这些窗口呢?
很简单,系统会分配给这些窗口一个ID,这个ID就叫作句柄(Handle)。
这些窗口的句柄就像身份证号码一样,当我们想要操作它们的时候,只要告诉系统它们的身份证ID也就是窗口句柄就可以了。
那么 Spy 可以提供图形化的参考,让我们获知哪个窗口是哪个句柄。
桌面壁纸原理实际上我们的系统是由很多很多个窗口组成,有的看得见,有的看不见(隐藏或透明),有的看得见但无法直接访问,而有的即使看不见我们也可以对它进行操作,总之所有的这些窗口互相堆叠最后呈现在我们面前。
你只要把这些窗口想像成多块不同的玻璃,就像照镜子一样由近及远、分别多层次地立在了你的面前,有的透明而有的不透明。
那么对于桌面来说,它也算是一块玻璃(一个窗口),只是它有些特殊,里面还套着几个小玻璃(子窗口)。
因此,大概地了解了窗口的概念,那么我们就可以使用 Spy 来观察它具体是个啥模样了。
桌面窗口本来的模样如下图,通过 Spy 来展开当前窗口的句柄树,就可以非常容易地了解到桌面窗口里面是怎么套娃的。
最顶上就是桌面窗口的句柄,在它下面还有很多个子窗口。
其中重点的对于我们有用的就是名字叫作 Program Manager 的子窗口,它正是我们苦苦寻找的桌面背景,里面囊括了包含壁纸和图标的子窗口。
简单地说,桌面窗口就如下面这样的层次。
|- "Program Manager" Progman // 总体桌面
|--- "" SHELLDLL_DefView // 负责显示桌面图标
|----- "FolderView" SysListView32 // 控制桌面图标排列顺序
|------- "" SysHeader32 // 隐藏窗口,功能不详
这些子窗口中的 "" SHELLDLL_DefView 就是桌面图标窗口了。
简单说一嘴,引号里是 窗口标题 ,而后面则是 类名 ,比如 "Program Manager" 就是窗口标题,而 Progman 就是类名了。
知道窗口标题和类名会非常有利于我们查找定位窗口,进而可以方便地对其进行操作。
直接嵌入 Progman窗口中行吗根据前面的介绍,我们很容易得出一个结论,既然桌面壁纸和图标是分别属于不同的子窗口,那么是不是我们可以将自己的程序窗口插入它们之间,就可以实现在图标下方显示呢?
理论想法是没错,可经过我的实际测试,非常遗憾根本无法实现这样的效果!
将程序窗口设定为 Progman 的子窗口,虽然它跑到了所有窗口的最后面,但是却无法在图标后面显示。