在C#中,可以通過調用EnumChildWindows函數來枚舉所有子窗口,并在回調函數中處理返回的窗口句柄。以下是一個示例代碼,演示了如何使用EnumChildWindows函數和回調函數處理返回的窗口句柄。
using System;
using System.Runtime.InteropServices;
class Program
{
[DllImport("user32.dll")]
public static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam);
public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
static void Main()
{
IntPtr mainWindowHandle = IntPtr.Zero; // 父窗口句柄
EnumChildWindows(mainWindowHandle, EnumWindowCallback, IntPtr.Zero);
}
public static bool EnumWindowCallback(IntPtr hWnd, IntPtr lParam)
{
// 處理返回的窗口句柄
Console.WriteLine("Child window handle: " + hWnd.ToString());
// 返回true以繼續枚舉下一個子窗口
return true;
}
}
在上面的示例中,我們定義了一個名為EnumWindowsProc的委托類型,用于作為EnumChildWindows函數的回調函數。在Main方法中,我們調用EnumChildWindows函數來枚舉所有子窗口,并傳入一個回調函數EnumWindowCallback來處理返回的窗口句柄。在EnumWindowCallback方法中,我們簡單地打印出返回的窗口句柄,并返回true以繼續枚舉下一個子窗口。
請注意,需要引入System.Runtime.InteropServices命名空間來使用DllImport屬性。在實際應用中,您可能需要根據具體需求來處理返回的窗口句柄,比如對子窗口進行操作或獲取子窗口的屬性等。