private static void FindChildWindows(IntPtr windowHandle, WindowFinderEnumWindowsProcContext context, WindowInformation windowInformation) { var childWindowContext = new WindowFinderEnumChildWindowsProcContext( context.NativeMethods, context.ClassNameConstraint, context.WindowTextConstraint, windowInformation); context.NativeMethods.EnumChildWindows(windowHandle, EnumChildWindowsCallback, childWindowContext); context.Windows.AddRange(childWindowContext.Windows); }
/// <remarks>Must be static because the delegate is passed to unmanaged code.</remarks>> private static bool EnumWindowsCallback(IntPtr windowHandle, WindowFinderEnumWindowsProcContext context) { int processID = context.NativeMethods.GetWindowThreadProcessID(windowHandle); if (processID == 0) { return(true); } if (context.OwnProcessIDConstraint.HasValue && processID == context.OwnProcessIDConstraint.Value) { return(true); } if (context.ProcessIDConstraint.HasValue && processID != context.ProcessIDConstraint.Value) { return(true); } var classNameResult = MatchClassName(context, windowHandle); if (classNameResult == null) { return(true); } var windowTextResult = MatchWindowText(context, windowHandle); if (windowTextResult == null) { return(true); } var windowInformation = new WindowInformation( processID, windowHandle, classNameResult.Value, windowTextResult.Value, null); if (classNameResult.IsMatch && windowTextResult.IsMatch) { context.Windows.Add(windowInformation); } if (context.IncludeChildWindows) { FindChildWindows(windowHandle, context, windowInformation); } return(true); }
bool IWin32WindowsNativeMethods.EnumWindows(EnumWindowsProc enumWindowsCallback, WindowFinderEnumWindowsProcContext context) { ArgumentUtility.CheckNotNull("enumWindowsCallback", enumWindowsCallback); ArgumentUtility.CheckNotNull("context", context); return(EnumWindows(enumWindowsCallback, context)); }
private static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, WindowFinderEnumWindowsProcContext data);