64 lines
2.0 KiB
C#
64 lines
2.0 KiB
C#
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
|
|
}
|
|
}
|