温馨提示×

如何通过C#枚举子窗口

c#
小樊
96
2024-08-08 02:42:52
栏目: 编程语言

通过C#,可以使用EnumWindows函数来遍历所有窗口,然后使用GetWindowText函数获取每个窗口的标题,最后通过判断窗口标题来筛选出需要的子窗口。

以下是一个简单的示例代码:

using System;
using System.Runtime.InteropServices;

class Program
{
    [DllImport("user32.dll")]
    public static extern bool EnumWindows(EnumWindowsProc enumProc, IntPtr lParam);

    [DllImport("user32.dll")]
    public static extern int GetWindowText(IntPtr hWnd, System.Text.StringBuilder lpString, int nMaxCount);

    public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);

    static void Main()
    {
        EnumWindows(EnumWindowsCallback, IntPtr.Zero);
    }

    static bool EnumWindowsCallback(IntPtr hWnd, IntPtr lParam)
    {
        const int nChars = 256;
        System.Text.StringBuilder buff = new System.Text.StringBuilder(nChars);
        if (GetWindowText(hWnd, buff, nChars) > 0)
        {
            string windowTitle = buff.ToString();
            if (windowTitle.Contains("子窗口标题关键词"))
            {
                Console.WriteLine(windowTitle);
            }
        }
        return true;
    }
}

在以上代码中,EnumWindowsCallback方法会被EnumWindows函数调用来处理每个窗口,其中会通过GetWindowText函数获取窗口标题,并通过判断标题包含特定关键词来筛选出需要的子窗口。

0