2011-05-30 103 views
1

它可以在C#或C++或WinAPI(我知道如何pInvoke)的答案。C#,C++,WinAPI - 從另一個進程獲取窗口數

我想達到的目標。 我想獲得另一個應用程序打開的窗口數量。 例如我有聊天應用程序。我想獲取多個窗口,因爲我不想檢測是否有人向我發送消息(新傳入消息=多一個窗口)。

所以簡而言之。 如何獲取另一個進程打開的窗口數量。

+1

涉及WinAPI的一種答案=用C的回答++。 – Puppy 2011-05-30 10:45:46

+0

@DeadMG這可以在WinAPI中。我的錯。 – Hooch 2011-05-30 10:52:25

+0

「新的傳入消息=多一個窗口」:如果目標聊天應用程序更改其UI,以便只有一個窗口用於所有消息,則會發生不良現象。如果你永遠不會改變你的聊天應用程序,這可能沒問題,但即便如此,它確實是一個混亂。 – 2011-05-30 10:57:00

回答

2

如果您有其他應用程序的進程ID,這裏有一個可能的Windows API的方式:

枚舉與EnumWindows的函數的所有頂級窗口,在回調函數測試主要使用GetWindowThreadProcessId屬於你的給定過程的窗口。從匹配的主窗口,您可以繼續枚舉其所有的子窗口與EnumChildWindows