如何在C#中實(shí)現(xiàn)EnumChildWindows的自定義

c#
小樊
90
2024-08-08 02:52:50

在C#中實(shí)現(xiàn)EnumChildWindows的自定義,可以通過(guò)使用P/Invoke來(lái)調(diào)用Windows API函數(shù)EnumChildWindows來(lái)實(shí)現(xiàn)。以下是一個(gè)示例代碼:

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

class Program
{
    [DllImport("user32.dll")]
    public static extern bool EnumChildWindows(IntPtr hWndParent, EnumChildProc lpEnumFunc, IntPtr lParam);

    public delegate bool EnumChildProc(IntPtr hwnd, IntPtr lParam);

    static void Main()
    {
        IntPtr hWnd = IntPtr.Zero; // 父窗口句柄
        List<IntPtr> childWindows = new List<IntPtr>();

        EnumChildProc childProc = (hwnd, lParam) =>
        {
            childWindows.Add(hwnd);
            return true;
        };

        EnumChildWindows(hWnd, childProc, IntPtr.Zero);

        foreach (var childWindow in childWindows)
        {
            // 處理子窗口
        }
    }
}

在上面的示例代碼中,我們使用P/Invoke來(lái)調(diào)用EnumChildWindows函數(shù),并定義了一個(gè)委托EnumChildProc來(lái)作為回調(diào)函數(shù)處理枚舉出的子窗口。通過(guò)遍歷childWindows列表,我們可以獲取到所有的子窗口句柄,并進(jìn)行相應(yīng)的操作。

0