当前位置:网站首页>今日份bug,点击win10任务栏视窗动态壁纸消失的bug,暂未发现解决方法。

今日份bug,点击win10任务栏视窗动态壁纸消失的bug,暂未发现解决方法。

2022-08-10 18:37:00 Pymili

大家的桌面都使用什么动态壁纸的软件呢?wallpaper engine ? 还是自制的软件? github上的开源软件?作者也使用Python 加 tkinter 做了一个简易的动态壁纸程序。我在一个下午使用中发现了一个bug,暂时没有找到修复方法。


运行程序后点击win10任务栏视图

         桌面上的壁纸成功消失不见(或被顶掉),这个Bug并不是只有我写的程序中有,github上找了两个程序,。OUS Wallpaper Wallpaper.Maker 两款程序测试后也有此bug.

现未找到原因,猜测可能是当用户点击任务视图窗口后刷新了程序的pm窗口导致壁纸被顶出(仅猜测)

动态壁纸的实现方法都是看了大佬:Draw Behind Desktop Icons in Windows 8+ - CodeProject 的文章实现的吧。0x052c信息。

"""窗口发信息"""
def pretreatmentHandle():
    hwnd = win32gui.FindWindow("Progman", "Program Manager")
    win32gui.SendMessageTimeout(hwnd, 0x052C, 0, None, 0, 0x03E8)
    hwnd_WorkW = None
    while 1:
        hwnd_WorkW = win32gui.FindWindowEx(None, hwnd_WorkW, "WorkerW", None)
        # print('hwmd_workw: ', hwnd_WorkW)
        if not hwnd_WorkW:
            continue
        hView = win32gui.FindWindowEx(hwnd_WorkW, None, "SHELLDLL_DefView", None)
        # print('hwmd_hView: ', hView)
        if not hView:
            continue
        h = win32gui.FindWindowEx(None, hwnd_WorkW, "WorkerW", None)
        # print('h_1: ',h)
        while h:
            win32gui.SendMessage(h, 0x0010, 0, 0)  # WM_CLOSE
            h = win32gui.FindWindowEx(None, hwnd_WorkW, "WorkerW", None)
            # print(h)
        break
    return hwnd
"""窗口创建子窗口"""
def main(WindowsTitle, SleepTime):
    global _id_
    while True:
        _HWND = get_hwnd_from_name(WindowsTitle)
        if _HWND:
            _id_ = _HWND
            sleep(SleepTime)
            win32gui.SetParent(_HWND, pretreatmentHandle())
            break
        else:
            continue

有哪位有经验的大佬,解决这个bug吗?

原网站

版权声明
本文为[Pymili]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_53280175/article/details/126120074