VB.net获取多屏幕显示器分辨率,及虚拟分辨率及放大比例
原来C#地址:C# - 如何在多显示器上下文中获得真实的屏幕分辨率? | (1r1g.com)
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Runtime.InteropServices
Imports System.Text
Imports System.Threading.Tasks
Imports System.Windows.Forms
Public Class ScreenReal
Const ENUM_CURRENT_SETTINGS As Integer = -1
Sub Main()
For Each screen As Screen In Screen.AllScreens
Dim dm As DEVMODE = New DEVMODE()
dm.dmSize = Marshal.SizeOf(dm)
EnumDisplaySettings(screen.DeviceName, ENUM_CURRENT_SETTINGS, dm)
Console.WriteLine($"Device: {screen.DeviceName}")
Console.WriteLine($"Real Resolution: {dm.dmPelsWidth}x{dm.dmPelsHeight}")
Console.WriteLine($"Virtual Resolution: {screen.Bounds.Width}x{screen.Bounds.Height}")
Console.WriteLine()
Next
End Sub
<DllImport("user32.dll")>
Public Shared Function EnumDisplaySettings(lpszDeviceName As String, iModeNum As Integer, ByRef lpDevMode As DEVMODE) As Boolean
End Function
<StructLayout(LayoutKind.Sequential)>
Public Structure DEVMODE
Private Const CCHDEVICENAME As Integer = 32
Private Const CCHFORMNAME As Integer = 32
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)>
Public dmDeviceNam As String
Public dmSpecVersion As Short
Public dmDriverVersion As Short
Public dmSize As Short
Public dmDriverExtra As Short
Public dmFields As Integer
Public dmPositionX As Integer
Public dmPositionY As Integer
Public dmDisplayOrientation As ScreenOrientation
Public dmDisplayFixedOutput As Integer
Public dmColor As Short
Public dmDuplex As Short
Public dmYResolution As Short
Public dmTTOption As Short
Public dmCollate As Short
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)>
Public dmFormName As String
Public dmLogPixels As Short
Public dmBitsPerPel As Integer
Public dmPelsWidth As Integer
Public dmPelsHeight As Integer
Public dmDisplayFlags As Integer
Public dmDisplayFrequency As Integer
Public dmICMMethod As Integer
Public dmICMIntent As Integer
Public dmMediaType As Integer
Public dmDitherType As Integer
Public dmReserved1 As Integer
Public dmReserved2 As Integer
Public dmPanningWidth As Integer
Public dmPanningHeight As Integer
End Structure
End Class