internal static extern bool GetWindowPlacement(IntPtr hWnd, ref WindowPlacement lpwndpl);
        private void RestoreOnShow(object sender, WindowInfoEventArgs e)
        {
            WindowPlacement windowplacement = new WindowPlacement();
            ExternalReferences.GetWindowPlacement(this.Handle, ref windowplacement);
            WindowPattern windowPattern =
                (WindowPattern) this.AutomationElement.GetCurrentPattern(WindowPattern.Pattern);
            WindowVisualState visualState = ((windowplacement.flags & (int) WindowPlacementFlags.RestoreToMaximize) > 0)
                ? WindowVisualState.Maximized
                : WindowVisualState.Normal;
            windowPattern.SetWindowVisualState(visualState);

            this.Restored?.Invoke(sender, new WindowInfoEventArgs(this));
        }
 private static WindowPlacement GetPlacement(IntPtr hwnd)
 {
     WindowPlacement placement = new WindowPlacement();
     placement.length = Marshal.SizeOf(placement);
     GetWindowPlacement(hwnd, ref placement);
     return placement;
 }
 internal static WindowPlacement GetWindowPlacement(IntPtr hWnd)
 {
     return(WindowPlacement.Load(hWnd));
 }