You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

壁纸切换时WorkerW子窗口被覆盖及SHELLDLL视图适配问题求助

桌面窗口层级问题及尝试方案

初始实现与问题

我实践了将窗口绘制在桌面图标后方的方案,已成功将自己的窗口设置为WorkerW窗口的子窗口,使其显示在桌面图标后方:
窗口显示在桌面图标后方

但遇到一个问题:当用户切换壁纸或壁纸幻灯片播放时,我会在淡入淡出的壁纸切换动画启动后才检测到事件,此时系统会生成一个新的WorkerW窗口并绘制在原有WorkerW窗口上方。请问是否有办法快速获取新WorkerW的句柄,让我的窗口绘制在其后方,或是快速将我的窗口设为新WorkerW的子窗口,避免被覆盖的现象被用户察觉?

尝试Lemi方法后的效果

采用Lemi方法后的效果

编辑2:嵌入SHELLDLL视图的尝试

我已成功将窗口嵌入SHELLDLL视图,并置于桌面图标(即名为GLFW30的list view)上方:
窗口置于桌面图标上方

复现步骤:

  • 获取任意应用程序的窗口句柄。
  • 打开Spy++,找到SHELLDLL视图的窗口句柄,将其从十六进制转换为十进制后传入SetParent(windowHWND, targetHWND)。
  • 调用SetWindowPos时,将listView32的窗口句柄作为hwndInsertAfter参数传入,运行程序后,当前窗口会被置于listview32下方:
    窗口置于listview32下方

但遗憾的是,listview32会覆盖我的窗口所有背景绘制内容,仅显示当前Windows壁纸:
窗口背景被listview32覆盖

内容的提问来源于stack exchange,提问作者Shubhz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:12:43