예제 #1
0
        public void SaveWindowPositions()
        {
            IntPtr shellWindow = GetShellWindow();

            this.windows.Clear();

            EnumWindows(delegate(IntPtr _ptr, int lParam)
            {
                if (_ptr == shellWindow)
                {
                    return(true);
                }
                if (!IsWindowVisible(_ptr))
                {
                    return(true);
                }

                int length = GetWindowTextLength(_ptr);
                if (length == 0)
                {
                    return(true);
                }

                Rect getRect = new Rect();
                GetWindowRect(_ptr, ref getRect);
                tagWINDOWPLACEMENT tagWINDOWPLACEMENT = new tagWINDOWPLACEMENT();
                GetWindowPlacement(_ptr, ref tagWINDOWPLACEMENT);
                SavedPosition savedPosition = new SavedPosition()
                {
                    Rect      = getRect,
                    Maximized = tagWINDOWPLACEMENT.showCmd == SW_SHOWMAXIMIZED
                };
                this.windows.Add(_ptr, savedPosition);
                return(true);
            }, 0);
        }
예제 #2
0
 private static extern bool GetWindowPlacement(IntPtr hwnd, ref tagWINDOWPLACEMENT tagWINDOWPLACEMENT);