C#ですべてのWindowsハンドラーを収集するにはどうすればよいですか。私はすべての窓が必要です(両親だけでなく)ありがとう、
1 に答える
3
次のユーティリティクラスを試してください。ウィンドウへのハンドルを指定すると、関連するすべての子ウィンドウが返されます。
public class WindowFinder
{
private class Helper
{
internal List<IntPtr> Windows = new List<IntPtr>();
internal bool ProcessWindow(IntPtr handle, IntPtr parameter)
{
Windows.Add(handle);
return true;
}
}
private delegate bool EnumWindowProc(IntPtr hWnd, IntPtr parameter);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool EnumChildWindows(IntPtr hwndParent, EnumWindowProc lpEnumFunc, IntPtr lParam);
public static List<IntPtr> GetChildWindows(IntPtr parentWindow)
{
var helper = new Helper();
EnumChildWindows(parentWindow, helper.ProcessWindow, IntPtr.Zero);
return helper.Windows;
}
}
于 2010-01-31T16:36:44.783 に答える