我正在構建一個應用程序,它將獲得所有控件都進入應用程序winform運行。首先,我可以注入DLL到應用程序winform運行並獲取應用程序winform的句柄正在運行。在我把所有的孩子窗口都變成了應用之後。接下來,我想通過FindWindowEx將所有控件放到子窗口中。但我不能通過FindWindowEx獲取所有控件
這裏是代碼:
static ArrayList GetAllChildrenWindowHandles(IntPtr hParent, int maxCount)
{
ArrayList result = new ArrayList();
int ct = 0;
IntPtr prevChild = IntPtr.Zero;
IntPtr currChild = IntPtr.Zero;
while (true && ct < maxCount)
{
currChild = FindWindowEx(hParent, prevChild, null, null);
if (currChild == IntPtr.Zero)
{
int errorCode = Marshal.GetLastWin32Error();
break;
}
result.Add(currChild);
prevChild = currChild;
++ct;
}
return result;
}
我得到的子窗口的句柄,並使用它的父。但是我無法通過FindWindowEx將所有控件都放到子窗口中。 對不起,我的英語
如果您要查找某個特定窗口的所有子項,則需要['EnumChildWindows'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms633494.aspx) 。 – 2013-04-24 15:52:18
邏輯結構是一棵樹。最容易遍歷一個遞歸函數。但是,這肯定也意味着ArrayList不是存儲結果的適當數據結構。 – 2013-04-24 19:43:10
「邏輯結構是一棵樹,最容易遍歷一個遞歸函數,但這肯定也意味着一個ArrayList不是存儲結果的正確數據結構」我想也是,但我不知道這是怎麼做到的?你知道嗎?感謝:) – user2208401 2013-04-25 01:11:36