using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows; namespace SystemX.Net.Platform.Common.Util { public static class AppWinControl { public enum eShowType { SW_HIDE = 0, //Hides the window and activates another window. SW_MAXIMIZE = 3, //Maximizes the specified window. SW_MINIMIZE = 6, //Minimizes the specified window and activates the next top-level window in the Z order. SW_RESTORE = 9, //Activates and displays the window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when restoring a minimized window. SW_SHOW = 5, //Activates the window and displays it in its current size and position. SW_SHOWDEFAULT = 10, //Sets the show state based on the SW_ value specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. SW_SHOWMAXIMIZED = 3, //Activates the window and displays it as a maximized window. SW_SHOWMINIMIZED = 2, //Activates the window and displays it as a minimized window. SW_SHOWMINNOACTIVE = 7, //Displays the window as a minimized window. This value is similar to SW_SHOWMINIMIZED, except the window is not activated. SW_SHOWNA = 8, //Displays the window in its current size and position. This value is similar to SW_SHOW, except that the window is not activated. SW_SHOWNOACTIVATE = 4, //Displays a window in its most recent size and position. This value is similar to SW_SHOWNORMAL, except that the window is not activated. SW_SHOWNORMAL = 1 } [DllImport("user32.dll")] public static extern IntPtr ExtGetWindowRect(IntPtr hWnd, out Rect lpRect); [DllImport("user32.dll")] public static extern bool ExtPrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags); [DllImport("user32.dll")] private static extern int ExtSetForegroundWindow(IntPtr hWnd); private const int SW_RESTORE = 9; [DllImport("user32.dll")] private static extern IntPtr ExtShowWindow(IntPtr hWnd, int nCmdShow); public static IntPtr GetWindowRect(IntPtr hWnd, out Rect lpRect) { return ExtGetWindowRect(hWnd, out lpRect); } public static bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags) { return ExtPrintWindow(hWnd, hdcBlt, nFlags); } public static int SetForegroundWindow(IntPtr hWnd) { return ExtSetForegroundWindow(hWnd); } public static IntPtr ShowWindow(IntPtr hWnd, int nCmdShow) { return ExtShowWindow(hWnd, nCmdShow); } } }