Exemple #1
0
        /// <summary>
        /// Gets a list of all visible top-level windows.
        /// </summary>
        public IList <Window> GetVisibleWindows()
        {
            mWindows = new List <Window>();

            User32.EnumWindowsProc evalWindowCallback = EvalWindowCallback;
            User32.EnumWindows(evalWindowCallback, 0);

            return(mWindows);
        }
Exemple #2
0
        public static IEnumerable <IntPtr> EnumChildWindows(IntPtr parentHandle)
        {
            var list = new List <IntPtr>();

            User32.EnumWindowsProc callback = delegate(IntPtr windowHandle, IntPtr lParam)
            {
                list.Add(windowHandle);
                return(true);
            };

            User32.EnumChildWindows(parentHandle, callback, IntPtr.Zero);
            return(list.ToArray());
        }
        public static ApplicationWindow FindWindowByCaption(string caption)
        {
            ApplicationWindow window = null;
            var ewp = new User32.EnumWindowsProc((hwnd, lparam) =>
            {
                var w = ApplicationWindows.GetApplicationWindow(hwnd, lparam);
                if (w != null && w.Title.Equals(caption, StringComparison.InvariantCulture))
                {
                    window = w;
                }

                return(window == null);                  //continue as long as window == null;
            });

            User32.EnumWindows(ewp, 0);
            return(window);
        }
        private static IEnumerable <ApplicationWindow> FindAltTabableWindows()
        {
            var windows = new List <ApplicationWindow>();
            var ewp     = new User32.EnumWindowsProc((hwnd, lparam) =>
            {
                ApplicationWindow window = null;
                var shouldContinue       = ApplicationWindows.Filter(hwnd, lparam, out window);
                if (window != null)
                {
                    windows.Add(window);
                }
                return(shouldContinue);
            });

            User32.EnumWindows(ewp, 0);
            return(windows.DistinctBy(w => w.hWnd));
        }
        public static IEnumerable <IntPtr> FindWindows(User32.EnumWindowsProc filter)
        {
            IntPtr        found   = IntPtr.Zero;
            List <IntPtr> windows = new List <IntPtr>();

            User32.EnumWindows(delegate(IntPtr wnd, IntPtr param)
            {
                if (filter(wnd, param))
                {
                    // Añade la ventana a la lista, si pasa el filtro
                    windows.Add(wnd);
                }

                // but return true here so that we iterate all windows
                return(true);
            }, IntPtr.Zero);

            return(windows);
        }
        void initCapture(bool capturingWindows)
        {
            windows.Clear();
            User32.EnumWindowsProc ewp = new User32.EnumWindowsProc(EvalWindow);
            User32.EnumWindows(ewp, 0);
            this.capturingWindows = capturingWindows;
            System.Threading.Thread.Sleep(200);
            this.SuspendLayout();
            this.Visible = false;
            this.Bounds  = GetScreenBounds();
            Image img = WindowCapture.CaptureWindow();

            pictureBox.Image = img;
            this.Visible     = true;
            this.ResumeLayout();

            string tt = capturingWindows ? lang.GetString("capture_tooltip_windowmode") : lang.GetString("capture_tooltip_regionmode");

            tooltip.SetToolTip(pictureBox, tt);
        }
        public static HashSet <IntPtr> findAllWindowsByClass(string sClass, string sWindowCaption = null)
        {
            try
            {
                _findAllWindowClass = sClass.Trim();

                if (sWindowCaption != null)
                {
                    _findAllWindowTitle = sWindowCaption.Trim();
                }

                windowHandles.Clear();
                User32.EnumWindowsProc callBackPtr = GetWindowHandle;
                User32.EnumWindows(callBackPtr, IntPtr.Zero);
            }
            catch (Exception e)
            {
                Log.logError("findAllWindowsByClass: " + e.ToString());
            }

            return(windowHandles);
        }
Exemple #8
0
        public void GetWindows()
        {
            User32.EnumWindowsProc filterDesktopWindows = delegate(HWND windowHandle, IntPtr lparam)
            {
                DesktopWindow desktopWindow = new DesktopWindow(windowHandle);

                if (desktopWindow.IsRuntimePresent())
                {
                    User32.ShowWindow(windowHandle, ShowWindowCommand.SW_RESTORE);
                    desktopWindow.GetInfo();

                    if (Windows.ContainsKey(desktopWindow.GetDesktopMonitor()))
                    {
                        if (!Windows[desktopWindow.GetDesktopMonitor()].Contains(desktopWindow))
                        {
                            AddWindow(desktopWindow);
                        }
                    }
                    else
                    {
                        Windows.Add(
                            desktopWindow.GetDesktopMonitor(),
                            new ObservableCollection <DesktopWindow>(new DesktopWindow[] { })
                            );
                        AddWindow(desktopWindow);
                    }
                }
                return(true);
            };

            User32.EnumWindows(filterDesktopWindows, IntPtr.Zero);

            foreach (var desktopMonitor in Windows)
            {
                Windows[desktopMonitor.Key].CollectionChanged += Windows_CollectionChanged;
            }
        }
        public static ApplicationWindow FindWindowByCaption(string caption)
        {
            ApplicationWindow window = null;
            var ewp = new User32.EnumWindowsProc((hwnd, lparam) =>
            {
                var w = ApplicationWindows.GetApplicationWindow(hwnd, lparam);
                if (w != null && w.Title.Equals(caption, StringComparison.InvariantCulture))
                    window = w;

                return (window == null); //continue as long as window == null;

            });
            User32.EnumWindows(ewp, 0);
            return window;
        }
Exemple #10
0
        private static IEnumerable<ApplicationWindow> FindAltTabableWindows()
        {
            List<ApplicationWindow> windows = new List<ApplicationWindow>();
            var ewp = new User32.EnumWindowsProc((hwnd, lparam) =>
            {
                ApplicationWindow window = null;
                var shouldContinue = ApplicationWindows.Filter(hwnd, lparam, out window);
                if (window != null)
                    windows.Add(window);
                return shouldContinue;

            });
            User32.EnumWindows(ewp, 0);
            return windows.DistinctBy(w => w.hWnd);
        }