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

大家的桌面都使用什么动态壁纸的软件呢?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吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pymili

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值