EnumChildWindows
是 C# 中的一个方法,用于枚举一个窗口的所有子窗口。如果你在使用这个方法时遇到了获取窗口重复的问题,可能是因为你在枚举过程中没有正确地处理窗口句柄。
以下是一些建议,可以帮助你解决这个问题:
List<IntPtr> windowHandles = new List<IntPtr>();
// 枚举所有子窗口
EnumChildWindows(parentWindowHandle, (hWnd, lParam) =>
{
// 检查窗口句柄是否已经存在于集合中
if (!windowHandles.Contains(hWnd))
{
// 如果不存在,将其添加到集合中
windowHandles.Add(hWnd);
// 对窗口进行处理,例如获取窗口标题等
}
return true;
}, IntPtr.Zero);
EnumChildWindows(parentWindowHandle, (hWnd, lParam) =>
{
// 获取窗口类名
string className = GetClassName(hWnd);
// 检查窗口类名是否为 "Button"
if (className == "Button")
{
// 对按钮窗口进行处理,例如获取按钮文本等
}
return true;
}, IntPtr.Zero);
Win32
API 函数 EnumWindows
和 GetWindowText
来枚举所有窗口并获取它们的文本。希望这些建议能帮助你解决问题。如果你还有其他问题,请随时提问。