2009-10-05 209 views
0

我有一個Python程序(PP)通過COM加載另一個程序(AP),獲取它的窗口句柄並將其設置爲PP父級。Parent關閉時關閉Python

這很有效,除非我無法控制該AP的左上角仍有[X]按鈕可用。由於這是用戶在完成該程序時關閉的一個非常明顯的地方,我嘗試了這一點,並且它在運行任務管理器時將PP留在了該任務管理器中,但不可見,除了通過任務管理器以外沒有任何其他方法可以殺死它。有關如何處理這個問題的任何想法?我期望用戶以這種方式關閉是相當常見的。

謝謝!

回答

0

至於你說你AP的把手,把它傳遞給PP,使PP具有左右手柄,所以當AP是封閉的PP可以檢查是否存在窗口句柄使用Windows API IsWindow或IsWindowVisible取決於你需要

import win32gui 
win32gui.IsWindow(handle) 
win32gui.IsWindowVisible(handle) 
+0

使用此方法,我能夠檢測窗口是否在未直接詢問AP的情況下打開。我仍然需要殺死這款應用,但我認爲這將是最簡單的部分。謝謝! – Fry 2009-10-07 16:56:35

+0

爲什麼你需要殺應用程序?哪個應用PP? – 2009-10-08 03:38:33

1

PP的控制流程如何?如果它是事件驅動的,它可以在關閉該父窗口或終止該AP過程時獲得適當的事件;否則它可以「輪詢」來檢查窗口或進程是否仍在。

+0

這很難說;兩者之間的交流幾乎是單向的。 PP告訴AP應該怎麼做,並要求在適當的時候回覆信息,但AP是一個GUI,因此民意調查可能會通過COM被阻止,所以我不確定我想不斷地這樣做。在python中,如果父項已關閉,是否應該與子項觸發事件? – Fry 2009-10-05 23:29:56

+0

感謝您的建議,我調查了API而不是AP,這似乎工作得很好。感謝您讓我開始工作路徑:) – Fry 2009-10-07 16:57:33