它可以在C#或C++或WinAPI(我知道如何pInvoke)的答案。C#,C++,WinAPI - 從另一個進程獲取窗口數
我想達到的目標。 我想獲得另一個應用程序打開的窗口數量。 例如我有聊天應用程序。我想獲取多個窗口,因爲我不想檢測是否有人向我發送消息(新傳入消息=多一個窗口)。
所以簡而言之。 如何獲取另一個進程打開的窗口數量。
它可以在C#或C++或WinAPI(我知道如何pInvoke)的答案。C#,C++,WinAPI - 從另一個進程獲取窗口數
我想達到的目標。 我想獲得另一個應用程序打開的窗口數量。 例如我有聊天應用程序。我想獲取多個窗口,因爲我不想檢測是否有人向我發送消息(新傳入消息=多一個窗口)。
所以簡而言之。 如何獲取另一個進程打開的窗口數量。
如果您有其他應用程序的進程ID,這裏有一個可能的Windows API的方式:
枚舉與EnumWindows的函數的所有頂級窗口,在回調函數測試主要使用GetWindowThreadProcessId屬於你的給定過程的窗口。從匹配的主窗口,您可以繼續枚舉其所有的子窗口與EnumChildWindows。
首先,您需要處理頂層窗口。如果您知道窗口的名稱,則FindWindow()將檢索它。
第二步已經解釋關於SO多次:
.NET (C#): Getting child windows when you only have a process handle or PID?
涉及WinAPI的一種答案=用C的回答++。 – Puppy 2011-05-30 10:45:46
@DeadMG這可以在WinAPI中。我的錯。 – Hooch 2011-05-30 10:52:25
「新的傳入消息=多一個窗口」:如果目標聊天應用程序更改其UI,以便只有一個窗口用於所有消息,則會發生不良現象。如果你永遠不會改變你的聊天應用程序,這可能沒問題,但即便如此,它確實是一個混亂。 – 2011-05-30 10:57:00