VB.net获取多屏幕显示器分辨率,及虚拟分辨率及放大比例

该代码示例展示了如何使用VB.net获取所有屏幕的物理分辨率(RealResolution)和虚拟分辨率(VirtualResolution),以及通过EnumDisplaySettings函数从user32.dll导入来获取显示器的放大比例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0阿波次多0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值