如何检测窗口的创建和关闭?

2024-10-01 22:26:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我找不到在窗口关闭时添加回调的方法,也找不到对新创建的窗口作出反应的可靠方法。在

我的应用程序使用subprocess.Popen创建了几个进程。每个进程都有一个可见的窗口。进程与pyHook共享一些事件,为此使用PumpMessages。在

我使用此方法获取每个窗口的句柄:Tim Golden: Find the window for my subprocess
这个方法首先休眠一段时间等待windows的创建,然后使用EnumWindows并比较pid。好吧,如果给足够的时间,这种方法有时是有效的,有时会闲置很长时间。显然,等待一个新窗口被创建的通知会更好。在

关窗户也是一样。我想我可以在pyHook事件中检查带有IsWindow的句柄,但这似乎不对。我还没有找到任何python示例,msdn examplessay WM_CLOSE将被发送,但我无法让它监听任何消息(从未发生过任何事情,我只看到我的pyHook事件)。我甚至不确定我在这里是否正确使用了HookMessage

def close_window(hwnd, msg):
    print "closed " + str(hwnd)

window = win32ui.CreateWindowFromHandle(hwnd)
# WM_CLOSE 0x0010
window.HookMessage(close_window,0x0010)

有没有一种方法可以添加在进程创建窗口时执行的回调?
如何在窗口关闭时执行回调?在


Tags: 方法应用程序close进程事件window句柄作出反应
1条回答
网友
1楼 · 发布于 2024-10-01 22:26:57

我在这方面找到的唯一方法是使用Python绑定来实现microsoftactiveaccessibilitylayer(pyAA),而且我已经研究了很多年了。这个项目不再是主动维护的,所以你必须自己为你的Windows版本构建它,但这是我所知道的唯一能让它工作的方法。在

相关问题 更多 >

    热门问题