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); }
private static extern bool GetWindowPlacement(IntPtr hwnd, ref tagWINDOWPLACEMENT tagWINDOWPLACEMENT);