在C#中實現EnumChildWindows的自定義,可以通過使用P/Invoke來調用Windows API函數EnumChildWindows來實現。以下是一個示例代碼:
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來調用EnumChildWindows函數,并定義了一個委托EnumChildProc來作為回調函數處理枚舉出的子窗口。通過遍歷childWindows列表,我們可以獲取到所有的子窗口句柄,并進行相應的操作。