我正在构建一个应用程序,它将获得所有控件都进入应用程序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