gpt4 book ai didi

c# - 如何获取列表或枚举具有相同类和名称的非托管窗口的所有句柄

转载 作者:行者123 更新时间:2023-11-30 21:14:26 26 4
gpt4 key购买 nike

使用 pinvoke 我可以轻松找到具有特定类和名称的窗口句柄:

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
IntPtr hWnd = FindWindow("Foo Class", "Foo Window");

如果只有 0 个或 1 个匹配窗口,上面的代码就可以完美运行。但是,我正在使用的非托管应用程序跨越多个窗口。多次调用 FindWindow 每次都会返回相同的窗口句柄。

我需要做什么才能获得具有特定类和名称的所有窗口。

我也将接受相同目标的替代解决方案的答案。 (我在想也许可以通过查找应用程序的进程 ID 然后获取所有顶级窗口并过滤所需的窗口来完成)。

最佳答案

您可能需要调用 EnumWindows枚举所有顶级窗口。您必须使用它们的窗口句柄来获取它们的标题和窗口类信息。

参见 http://www.pinvoke.net/default.aspx/user32/enumwindows.html举一个非常接近您要求的例子。

关于c# - 如何获取列表或枚举具有相同类和名称的非托管窗口的所有句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6237249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com