172 lines
7.2 KiB
C#
172 lines
7.2 KiB
C#
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;
|
|
|
|
}
|
|
} |