Если вы не хотите использовать System.Windows.Forms
(или не можете), вы можете получить разрешение экрана, используя функцию Windows API EnumDisplaySettings
.
Для вызоваФункция WinAPI, вы можете использовать функцию P / Invoke, которая также доступна в .NET Core.Обратите внимание, что это будет работать только в системе Windows, поскольку WinAPI не используется для целей, отличных от Windows.
Объявление функции выглядит следующим образом:
[DllImport("user32.dll")]
static extern bool EnumDisplaySettings(string deviceName, int modeNum, ref DEVMODE devMode);
Вам также нужен WinAPI DEVMODE
определение структуры:
[StructLayout(LayoutKind.Sequential)]
struct DEVMODE
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public int dmFields;
public int dmPositionX;
public int dmPositionY;
public int dmDisplayOrientation;
public int dmDisplayFixedOutput;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)]
public string dmFormName;
public short dmLogPixels;
public int dmBitsPerPel;
public int dmPelsWidth;
public int dmPelsHeight;
public int dmDisplayFlags;
public int dmDisplayFrequency;
public int dmICMMethod;
public int dmICMIntent;
public int dmMediaType;
public int dmDitherType;
public int dmReserved1;
public int dmReserved2;
public int dmPanningWidth;
public int dmPanningHeight;
}
На самом деле, вам не нужно большинство полей этой структуры.Интересными являются dmPelsWidth
и dmPelsHeight
.
. Вызовите функцию следующим образом:
const int ENUM_CURRENT_SETTINGS = -1;
DEVMODE devMode = default;
devMode.dmSize = (short)Marshal.SizeOf(devMode);
EnumDisplaySettings(null, ENUM_CURRENT_SETTINGS, ref devMode);
Теперь вы можете проверить разрешение экрана в полях dmPelsWidth
и dmPelsHeight
.devMode
struct.
Так как мы указываем null
в качестве первого аргумента, функция описывает текущее устройство отображения на компьютере, на котором работает вызывающий поток.