コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        bool IWin32WindowsNativeMethods.EnumWindows(EnumWindowsProc enumWindowsCallback, WindowFinderEnumWindowsProcContext context)
        {
            ArgumentUtility.CheckNotNull("enumWindowsCallback", enumWindowsCallback);
            ArgumentUtility.CheckNotNull("context", context);

            return(EnumWindows(enumWindowsCallback, context));
        }
コード例 #4
0
 private static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, WindowFinderEnumWindowsProcContext data);