windows桌面层次

首先要知道windows的桌面是由哪个窗口显示的。打开spy++工具。窗口列表翻到最下面有一个 类名是Progman窗口 标题是Program Manager的窗口。这个窗口下面还有好几个子窗口如下:

Progman窗口及其子窗口

桌面各个窗口层作用是什么

先看下原本的桌面吧,然后把每层窗口关闭,分析各个窗口的作用。

原本的窗口

当我们把SysHeader32窗口去除时会发生什么变化呢,看代码。

为了简单,直接用spy++看出来的窗口句柄,对该窗口进行关闭信息的发送,当这个窗口接收到了这个信号,该窗口就会关闭。在写代码时一定要查找窗口,因为每次电脑开机时,系统会重新分配句柄,所以这个句柄是会变化的,这里只是测试一下,所以就简单用了。

查找窗口句柄使用这个函数FindWindow(classname,windowname)

窗口句柄查看

知道了句柄我们就可以对这个窗口进行通信,能对其操作。

发送信号的函数SendMessage()

SysHeader32窗口

好了,知道了这些,我们可以对各个窗口发送关闭信号试试。

#include <Windows.h>int main() {SendMessage(HWND(0x000101B2), WM_CLOSE,0,0);//向窗口发送close信号return 0;
}

执行这段代码后结果是 (执行完F5刷新一下)

关闭SysHeader32窗口后

发现图标下面的名字不见了。所有这个窗口就是显示图标名字的。

FolderView窗口

接下来再关闭一个窗口试试 只需要改下窗口句柄其他的不用变 执行一下

#include <Windows.h>int main() {SendMessage(HWND(0x000101AE), WM_CLOSE,0,0);return 0;
}

发现图标没有了,所以这个窗口是显示图标的还有图标的一系列操作。并且可以发现现在鼠标在桌面上无法进行操作。

因此可以猜测:桌面有一个背景窗口,然后在背景窗口上覆盖了一个图标窗口,在图标窗口上有一个显示图标名字的窗口。覆盖在背景窗口上的窗口是透明的,所以我们可以看到背景的图案,但是没有设置鼠标穿透,所以当我们删掉这个图标窗口时原本的在桌面上的鼠标操作无效了。

SHELLDELL_DefView窗口

再删一个试试。改一下窗口句柄再执行下那个代码,发现并没有什么效果,目前我也不知道它有什么用 但这不重要。我大胆的猜测一下,可能这个窗口就是管理壁纸的窗口,但是当我前面的窗口删掉了无法进行刷新,所以壁纸没有去除。大胆猜测,也不知道是不是对的。

Program Manager窗口

删掉Program Manager的窗口试试

当执行删除代码时会出现这个关机窗口,说明这个窗口是管理窗口,桌面最底层的窗口,关掉了就没了

桌面壁纸原理

我们自己做一个窗口,把自己做的窗口放置在最底层的Program Manager上面。把自己做的窗口设置为它的子窗口,自然就到了它的上面,因为图标层的窗口是透明的。因此在自己的窗口上放显示什么,桌面就可以看到什么。

动态壁纸实现

按照上面的逻辑。应该可以实现。但是有一个视频播放到我们创建的窗口上去时,只会出现刚设置时的那一刻画面。不会播放视频。(可能是Program Manager不会自动刷新,也没必要因为如果是单张的图片的话,没必要刷新)windows自带的设置壁纸好像只能是图片不能是视频(小声我也不确定)。

因此需要想一个办法让窗口会一直刷新

意外得知。如果我们将Program Manager下的子窗口全部给别的窗口管理,Program Manager就不剩子窗口了。这个时候再设置为它的窗口,那就会进行刷新

有一个信号可以实现这个功能(神奇的0x052c)

向Program Manager发送这个信号,会进行一个操作 Program Manager会创建一个类名叫workerW的窗口,并把子窗口全部交给它管理

这时再设置动态的窗口就能动了。

结语

后面的都没有示例,旨在让同学们直接敲一下代码实验一下。有了前面的原理基础应该就能写出自己想要的结果吧。加油,现在就开始动手,写一个动态壁纸吧软件吧。

windows桌面窗口层次解析以及C语言设置壁纸原理应用相关推荐

  1. 【完成】桌面窗口层次(Z-Order 记录文档)

    PART1  桌面窗口层次(Z-Order 文本文档) 未开启Aero -------------------------------------------- Z-Order(Z 层次顺序): Bo ...

  2. windows 技术篇 - spy++工具获取、安装和简单使用,选中windows桌面窗口快速查看窗口属性方法

    很多时候我们需要获取一些 windows 的窗口信息,这时候 spy++ 是一个非常棒的工具,可以直接选中某个窗口,直接获取它的全部信息! 工具获取方式: 小蓝枣的网盘资源仓库,提取码:w58i. 小 ...

  3. 计算机桌面背景滚动播出,哪个知道怎么设置壁纸滚动

    哪个知道怎么设置壁纸滚动 第一步:我们得先准备好我们要设置桌面的壁纸,我这里演示就已经先保存在我的电脑里了,备用.第二步:电脑桌面空白处"右击"选择"个性化", ...

  4. 【Vue3】高仿win桌面【登录、打开应用、设置壁纸】

    登录界面 登录界面 操作界面 操作界面 开始菜单和日历 开始菜单和日历 右键菜单 右键菜单

  5. [测试项目]Windows 桌面自定义WorkerW分层窗口

    提示:本文所采用的方法属于本人猜想方案(目前没有在Win7及XP尝试过,但在NT的较高版本Win10在不发送052C消息,即不使用系统生成的WorkerW分层窗口实践成功.Win8开始DWM无法关闭, ...

  6. VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor

    目录 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor 接上:VC++ 绘制线条 OnLButtonDown函数 ...

  7. Linux系统语言设置和locale命令详解

    简介 Linux系统可以用locale命令查看语言设置,查看中英文环境,具体操作如下. 操作 1.查看当前安装有那些语言: [root@localhost /]# locale -a 2.当前语言相关 ...

  8. Windows运行程序时桌面窗口卡死

    一.问题描述 我们在使用windows 系统过程中,经常会遇到执行某些程序的时候,程序窗口显示"未想一个响应",桌面窗口整个卡死的情况,但是过一段时间会自动恢复,查看任务管理器,并 ...

  9. c语言lnk1168无法打开exe,跪求大佬帮帮看看LINK : fatal error LNK1168: 无法打开 F:\windows程序设计\窗口\......

    马上注册,结交更多好友,享用更多功能^_^ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 运行的结果显示是这样: 1>------ 已启动生成: 项目: 窗口, 配置: Debug W ...

最新文章

  1. CUDA Samples: Dot Product
  2. Python抓取新浪新闻数据(三)
  3. apache安装 windows
  4. 【pointnet++点云识别】基于pointnet++的点云地理数据识别的MATLAB仿真
  5. 如何在Kubernetes中暴露服务访问
  6. jpa报错No property found for column ‘first_time‘ mapped to field ‘first_time‘
  7. 05_专家的快速入门、加载MNIST数据集、数据集切分和混淆、定义类的方式构建模型、选择优化器和损失函数、训练模型和测试模型准确率
  8. 【转】用BibTeX 写 Reference
  9. observable_Java Observable addObserver()方法与示例
  10. Linux教程+操作系统教程 -- 大全
  11. 抖音快手火山 热门采集/个人主页无水印视频批量解析下载工具2019-11-11
  12. 【ChatGPT】多国“围堵”,万人抵制,AI发展的红线到底在哪?
  13. 补码加减法,溢出,超前进位
  14. Hashmap底层源码
  15. 【人脸识别】face_recognition 库的使用
  16. 谭浩强C程序设计快速复习笔记
  17. 阿联酋和沙特阿拉伯就加密货币展开合作
  18. 打开IE浏览器自动跳转到Edge浏览器
  19. (小白)python如何微信自动加好友
  20. linux下查看硬盘型号等信息

热门文章

  1. linux 修改分辨率lcd_Linux下LCD屏幕字体显示优化--dpi设置及sub-pixel次像素微调
  2. 【idea美化篇】3个插件让你的idea彻底变脸
  3. 仰邦控制卡Python接口_仰邦控制卡使用说明.doc
  4. Matlab/dSPACE/永磁同步电机控制 基于dspace的永磁同步电机矢量控制系统模型
  5. 【精华分享】【Unity特效Shader】关于特效学习的总览
  6. 微信端在电脑点不能点击下拉框
  7. 海内外技术人们“看”音视频技术的未来
  8. 鹅厂Tencent面试题
  9. 计算机桌面导航栏中删除内容,电脑任务栏下面有个搜索的东东怎么删了
  10. 分析软件——ADS-B和雷达Asterix数据分析处理软件GAEAnalyzer