using System; using System.Runtime.InteropServices; using System.Drawing; using System.Text; namespace PreviewToy { // Desktop Windows Manager APIs internal class DwmApi { [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow(); [DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr window); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmEnableBlurBehindWindow(IntPtr hWnd, DWM_BLURBEHIND pBlurBehind); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmExtendFrameIntoClientArea(IntPtr hWnd, MARGINS pMargins); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern bool DwmIsCompositionEnabled(); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmGetColorizationColor( out int pcrColorization, [MarshalAs(UnmanagedType.Bool)]out bool pfOpaqueBlend); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmEnableComposition(bool bEnable); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern IntPtr DwmRegisterThumbnail(IntPtr dest, IntPtr source); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmUnregisterThumbnail(IntPtr hThumbnail); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmUpdateThumbnailProperties(IntPtr hThumbnail, DWM_THUMBNAIL_PROPERTIES props); [DllImport("dwmapi.dll", PreserveSig = false)] public static extern void DwmQueryThumbnailSourceSize(IntPtr hThumbnail, out Size size); [StructLayout(LayoutKind.Sequential)] public class DWM_THUMBNAIL_PROPERTIES { public uint dwFlags; public RECT rcDestination; public RECT rcSource; public byte opacity; [MarshalAs(UnmanagedType.Bool)] public bool fVisible; [MarshalAs(UnmanagedType.Bool)] public bool fSourceClientAreaOnly; public const uint DWM_TNP_RECTDESTINATION = 0x00000001; public const uint DWM_TNP_RECTSOURCE = 0x00000002; public const uint DWM_TNP_OPACITY = 0x00000004; public const uint DWM_TNP_VISIBLE = 0x00000008; public const uint DWM_TNP_SOURCECLIENTAREAONLY = 0x00000010; } [StructLayout(LayoutKind.Sequential)] public class MARGINS { public int cxLeftWidth, cxRightWidth, cyTopHeight, cyBottomHeight; public MARGINS(int left, int top, int right, int bottom) { cxLeftWidth = left; cyTopHeight = top; cxRightWidth = right; cyBottomHeight = bottom; } } [StructLayout(LayoutKind.Sequential)] public class DWM_BLURBEHIND { public uint dwFlags; [MarshalAs(UnmanagedType.Bool)] public bool fEnable; public IntPtr hRegionBlur; [MarshalAs(UnmanagedType.Bool)] public bool fTransitionOnMaximized; public const uint DWM_BB_ENABLE = 0x00000001; public const uint DWM_BB_BLURREGION = 0x00000002; public const uint DWM_BB_TRANSITIONONMAXIMIZED = 0x00000004; } [StructLayout(LayoutKind.Sequential)] public struct RECT { public int left, top, right, bottom; public RECT(int left, int top, int right, int bottom) { this.left = left; this.top = top; this.right = right; this.bottom = bottom; } } public const int SW_SHOWNORMAL = 1; public const int SW_SHOWMINIMIZED = 2; public const int SW_SHOWMAXIMIZED = 3; [DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImport("user32.dll", SetLastError = true)] public static extern int GetWindowLong(IntPtr hWnd, int nIndex); public const int GWL_ID = (-12); public const int GWL_STYLE = (-16); public const int GWL_EXSTYLE = (-20); // Window Styles public const UInt32 WS_OVERLAPPED = 0; public const UInt32 WS_POPUP = 0x80000000; public const UInt32 WS_CHILD = 0x40000000; public const UInt32 WS_MINIMIZE = 0x20000000; public const UInt32 WS_VISIBLE = 0x10000000; public const UInt32 WS_DISABLED = 0x8000000; public const UInt32 WS_CLIPSIBLINGS = 0x4000000; public const UInt32 WS_CLIPCHILDREN = 0x2000000; public const UInt32 WS_MAXIMIZE = 0x1000000; public const UInt32 WS_CAPTION = 0xC00000; // WS_BORDER or WS_DLGFRAME public const UInt32 WS_BORDER = 0x800000; public const UInt32 WS_DLGFRAME = 0x400000; public const UInt32 WS_VSCROLL = 0x200000; public const UInt32 WS_HSCROLL = 0x100000; public const UInt32 WS_SYSMENU = 0x80000; public const UInt32 WS_THICKFRAME = 0x40000; public const UInt32 WS_GROUP = 0x20000; public const UInt32 WS_TABSTOP = 0x10000; public const UInt32 WS_MINIMIZEBOX = 0x20000; public const UInt32 WS_MAXIMIZEBOX = 0x10000; public const UInt32 WS_TILED = WS_OVERLAPPED; public const UInt32 WS_ICONIC = WS_MINIMIZE; public const UInt32 WS_SIZEBOX = WS_THICKFRAME; // Extended Window Styles public const UInt32 WS_EX_DLGMODALFRAME = 0x0001; public const UInt32 WS_EX_NOPARENTNOTIFY = 0x0004; public const UInt32 WS_EX_TOPMOST = 0x0008; public const UInt32 WS_EX_ACCEPTFILES = 0x0010; public const UInt32 WS_EX_TRANSPARENT = 0x0020; public const UInt32 WS_EX_MDICHILD = 0x0040; public const UInt32 WS_EX_TOOLWINDOW = 0x0080; public const UInt32 WS_EX_WINDOWEDGE = 0x0100; public const UInt32 WS_EX_CLIENTEDGE = 0x0200; public const UInt32 WS_EX_CONTEXTHELP = 0x0400; public const UInt32 WS_EX_RIGHT = 0x1000; public const UInt32 WS_EX_LEFT = 0x0000; public const UInt32 WS_EX_RTLREADING = 0x2000; public const UInt32 WS_EX_LTRREADING = 0x0000; public const UInt32 WS_EX_LEFTSCROLLBAR = 0x4000; public const UInt32 WS_EX_RIGHTSCROLLBAR = 0x0000; public const UInt32 WS_EX_CONTROLPARENT = 0x10000; public const UInt32 WS_EX_STATICEDGE = 0x20000; public const UInt32 WS_EX_APPWINDOW = 0x40000; public const UInt32 WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE); public const UInt32 WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST); public const UInt32 WS_EX_LAYERED = 0x00080000; public const UInt32 WS_EX_NOINHERITLAYOUT = 0x00100000; // Disable inheritence of mirroring by children public const UInt32 WS_EX_LAYOUTRTL = 0x00400000; // Right to left mirroring public const UInt32 WS_EX_COMPOSITED = 0x02000000; public const UInt32 WS_EX_NOACTIVATE = 0x08000000; } }