GiantappMan/livewallpaper

窗口层级错误

stdinfo opened this issue · 43 comments

image

如图,动态壁纸窗口显示在了桌面图标之上。(完全影响使用)

另外一个小建议,软件首页和”更多“选项里面显示下载客户端稍微有点奇怪,可以给客户端和官网区分一下。
感谢作者的付出,希望能修一下bug~

你能告诉我你是怎么出现这种情况的吗?

我印象中以前开了360 遇到过这种问题。。。

我这里是100%复现,没有360,只有火绒

是什么操作系统呢?

win11,但是窗口结构上看和我之前版本的win10一致

稍等我先看看这个函数,我这的VS是2017的不一定能用(平时基本没写过C#

LiveWallpaperEngineAPI.Samples.NetCore.Test 把这个项目运行起来就可以测试

刚才看了这块的实现,如果没有理解错的话应该是枚举到存在SHELLDLL_DefView子窗口的窗口以后返回了下一个WorkerW,但是SHELLDLL_DefView并不唯一,一些软件如果调用桌面图标渲染的话也会创建SHELLDLL_DefView窗口,所以如果找到一个就返回的话就会有问题。
这里要么判断一下找到的SHELLDLL_DefView是不是WorkerW的子窗口,要不可以直接全部枚举完找最后一个包括SHELLDLL_DefView的窗口再执行第二个FindWindowsEX。(另外感觉直接枚举最后一个WorkerW似乎也可行?)

你Fork一个在你本机改改,如果能修复的话,可以提一个PR。
我可能下个月才会发新版本,主要是不能重现,我也只能试试。

抽空试试吧,不过以我的C#水平(完全不会)不一定改得好23333
复现的话我估计像Fences之类的桌面美化软件都会造成这个问题。
issue我就暂时先不关了?

如果是Fences导致的,可以先把Fences关了。重启巨应壁纸应该可以用,issue先不关,我后面调查一下

Fences最新版应该是可以兼容的V3.1.3.3

唔,,,我这就是3.x的fences,那我再去看看能不能找到是什么软件调用的吧。另外兼容性和启动顺序应该也相关。

你看看是3.1.3.3吗

不是的,不过我禁用掉fences以后那几个窗口还在,不知道是没退出干净的原因还是别的

可以想办法升级一下,fences老版本无法兼容,后面专门修复过这个问题
image

https://forums.stardock.com/486084/fences-support-faq#disableupdate

我们的问题和这个FAQ正好是反的2333

不是的,不过我禁用掉fences以后那几个窗口还在,不知道是没退出干净的原因还是别的

可以重启下电脑试试,保险起见。。。

这样,和fences兼容的问题我抽空再试一下,不过上面GetWorkerW() 函数改法应该是没问题的,至少能增加点健壮性(要么保证显示在桌面原本的workerw窗口后面要么保证显示在最下层,这样肯定不会覆盖其他的桌面元素)。

嗯,这个我后面会优化下。主要是想确认下是否是旧版本Fences导致的

如果我确认了问题的话我会回复一下的。

你能告诉我,你用的fences版本号吗,我去重现下。。。

3.08,我测试了确实是兼容性问题。(如果后启动fences的话就会存在上述和wpe冲突的问题)

有途径可以下旧版本吗?我想试试

抱歉没找到当时的安装文件,不过百度了一下关键词fences 3.08前面好几个可用的Cracked版本,只是测试一下的话...(雾

好的,我再找找

辛苦了(大佬的回复速度真的不是住在Github吗2333

邮件通知 哈哈

image
今天装了3.0.8.1 还是没有重现

image
奇怪,那你那边fences启动以后有类似上图这样的窗口出现吗?

可以把所有相关信息的spyxx截图都发来看看吗? 包含workerW和Shelldll_defview的

image
这是最下面的一部分窗口,也打开了Livewallpaper做参照

有一种可能性是用fences创建分组或者文件夹快捷入口的某一个才会创建这样的窗口,如果让我猜的话我觉得可能是文件夹快捷入口

我已经卸载老版本了,感谢反馈,后面我再看看。

辛苦作者了,大部分解决啦。
但是快捷入口的背景还会错误的获取原桌面壁纸,我还没有debug问题在哪里(这个有可能是fences的问题)。

辛苦作者了,大部分解决啦。
但是快捷入口的背景还会错误的获取原桌面壁纸,我还没有debug问题在哪里(这个有可能是fences的问题)。

辛苦作者了,大部分解决啦。 但是快捷入口的背景还会错误的获取原桌面壁纸,我还没有debug问题在哪里(这个有可能是fences的问题)。

快捷入口的问题可以通过fences种关闭半透明分区背景解决,具体冲突原因有空我再看看吧,不过这样已经就不影响使用啦

这个不好改,你把系统背景,改成纯色的应该就可以了
image

嗯嗯辛苦啦,现在已经可以使用了,如果这个问题我能找到解决方法的话我另外再开issue

感谢帮助定位问题,以前也有人反馈这个问题,一直没找到原因。