using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace AIProofread.Util { public class User32Util { [DllImport("user32.dll")] public static extern bool GetWindowRect(IntPtr hWnd, ref RECT rect); [StructLayout(LayoutKind.Sequential)] public struct RECT { public int Left; public int Top; public int Right; public int Bottom; } // 引入 User32.dll 中的 SetParent 方法 [DllImport("user32.dll", SetLastError = true)] public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool SetForegroundWindow(IntPtr hWnd); #region 获取系统屏幕缩放比例 public const int HORZRES = 8; public const int VERTRES = 10; public const int LOGPIXELSX = 88; public const int LOGPIXELSY = 90; public const int DESKTOPVERTRES = 117; public const int DESKTOPHORZRES = 118; [DllImport("user32.dll")] public static extern IntPtr GetDC(IntPtr ptr); [DllImport("gdi32.dll")] public static extern int GetDeviceCaps( IntPtr hdc, // handle to DC int nIndex // index of capability ); [DllImport("user32.dll", EntryPoint = "ReleaseDC")] public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDc); [DllImport("user32.dll")] public static extern IntPtr GetDesktopWindow(); public static float GetSreenScale() { var hdc = GetDC(GetDesktopWindow()); int nWidth = GetDeviceCaps(hdc, DESKTOPHORZRES); ReleaseDC(IntPtr.Zero, hdc); float f_Scale = (float)nWidth / (float)Screen.PrimaryScreen.Bounds.Width; return 1 / f_Scale; } #endregion } }