使用pinvoke我可以找到具有特定类&的窗口的句柄。轻松命名:
[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
IntPtr hWnd = FindWindow("Foo Class", "Foo Window");
如果只有0或1个匹配的窗口,上面的代码就可以完美运行。但是,我正在使用的非托管应用程序跨越多个窗口。多次调用FindWindow每次都返回相同的窗口句柄。
我需要做什么才能获得具有特定类和名称的所有窗口。
我也会接受替代解决方案同一目标的答案。 (我想也许可以通过查找应用程序的进程ID然后获取所有顶级窗口,并过滤所需的窗口来完成。
答案 0 :(得分:4)
您可能需要调用EnumWindows来枚举所有顶级窗口。你必须使用他们的窗口句柄来获取他们的标题和窗口类信息。
请参阅http://www.pinvoke.net/default.aspx/user32/enumwindows.html以获取与您所要求的内容非常接近的示例。