我無法找到添加窗口關閉時回調的方法 - 也不是對新創建窗口作出反應的可靠方法。如何檢測窗口的創建和關閉?
我的應用程序使用subprocess.Popen
創建了幾個進程。每個進程都有一個可見的窗口。這個過程與共享一些事件pyHook,使用PumpMessages
爲此。
我用這個方法來得到一個處理每個窗口: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)
有沒有辦法添加在某個進程創建一個窗口,被執行的回調?
如何關閉窗口時執行回調?