我找不到在窗口关闭时添加回调的方法 - 也不是对新创建的窗口做出反应的可靠方法。
我的应用程序使用subprocess.Popen
创建了一些进程。每个进程都有一个可见窗口。这些进程使用PumpMessages
与 pyHook 共享一些事件。
我使用此方法获取每个窗口的句柄:Tim Golden: Find the window for my subprocess
这个方法先睡一会儿等待窗口的创建,然后使用EnumWindows
并比较pid。好吧,如果有足够的时间,这种方法有时会起作用,有时会长时间闲置。显然等待创建新窗口的通知会更好。
关闭窗口也是如此。我想我可以在pyHook事件中检查IsWindow
的句柄,但这似乎不正确。我没有找到任何python示例,msdn examples说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)
有没有办法添加在进程创建窗口时执行的回调?
如何在窗口关闭时执行回调?
答案 0 :(得分:1)
我在这方面遇到的唯一方法,就是我多年来一直在研究这个问题,就是使用Python活动辅助功能层(pyAA)的Python绑定。此项目不再被主动维护,因此您必须自己为您的Windows版本构建它,但这是我知道的唯一方法来实现它。