Vb.net:如何获得我的显示器支持的屏幕尺寸 [英] Vb.net: how do I get supported screen sizes of my monitor
本文介绍了Vb.net:如何获得我的显示器支持的屏幕尺寸的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好,
我需要做的是获取主监视器所有支持的屏幕分辨率的列表,以便将分辨率更改为其中一种支持的模式。有谁知道怎么做?
我在VB 2010快递中构建这个。
请帮助,提前谢谢。
我尝试过:
ScreenResolution类。以下告诉我是否支持给定的分辨率,但不列出所有模式。
Hi all,
What I need to do is get a list of all supported screen resolutions of my primary monitor, in order to change the resolution to one of the supported modes. Anyone know how to do that ?
I am building this in VB 2010 express.
pls help, thanks in advance.
What I have tried:
ScreenResolution class. The following tells me if a given resolution is supported but does not list all the modes.
<pre>Imports System
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Public Class Resolution
<structlayout(layoutkind.sequential)> _
Public Structure DEVMODE1
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> _
Public dmDeviceName As String
Public dmSpecVersion As Short
Public dmDriverVersion As Short
Public dmSize As Short
Public dmDriverExtra As Short
Public dmFields As Integer
Public dmOrientation As Short
Public dmPaperSize As Short
Public dmPaperLength As Short
Public dmPaperWidth As Short
Public dmScale As Short
Public dmCopies As Short
Public dmDefaultSource As Short
Public dmPrintQuality As Short
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 Short
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
Class User_32
<dllimport("user32.dll")> _
Public Shared Function EnumDisplaySettings(ByVal deviceName As String, ByVal modeNum As Integer, ByRef devMode As DEVMODE1) As Integer
End Function
<dllimport("user32.dll")> _
Public Shared Function ChangeDisplaySettings(ByRef devMode As DEVMODE1, ByVal flags As Integer) As Integer
End Function
Public Const ENUM_CURRENT_SETTINGS As Integer = -1
Public Const CDS_UPDATEREGISTRY As Integer = 1
Public Const CDS_TEST As Integer = 2
Public Const DISP_CHANGE_SUCCESSFUL As Integer = 0
Public Const DISP_CHANGE_RESTART As Integer = 1
Public Const DISP_CHANGE_FAILED As Integer = -1
End Class
Class CResolution
Public Sub New(ByVal a As Integer, ByVal b As Integer)
Dim screen As Screen = screen.PrimaryScreen
Dim iWidth As Integer = a
Dim iHeight As Integer = b
Dim dm As DEVMODE1 = New DEVMODE1
dm.dmDeviceName = New String(New Char(32) {})
dm.dmFormName = New String(New Char(32) {})
dm.dmSize = CType(Marshal.SizeOf(dm), Short)
If Not (0 = User_32.EnumDisplaySettings(Nothing, User_32.ENUM_CURRENT_SETTINGS, dm)) Then
dm.dmPelsWidth = iWidth
dm.dmPelsHeight = iHeight
Dim iRet As Integer = User_32.ChangeDisplaySettings(dm, User_32.CDS_TEST)
If iRet = User_32.DISP_CHANGE_FAILED Then
MessageBox.Show("Unable to process your request")
MessageBox.Show("Description: Unable To Process Your Request. Sorry For This Inconvenience.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
iRet = User_32.ChangeDisplaySettings(dm, User_32.CDS_UPDATEREGISTRY)
Select Case iRet
Case User_32.DISP_CHANGE_SUCCESSFUL
' break
Case User_32.DISP_CHANGE_RESTART
MessageBox.Show("Description: You Need To Reboot For The Change To Happen." & Microsoft.VisualBasic.Chr(10) & " If You Feel Any Problem After Rebooting Your Machine" & Microsoft.VisualBasic.Chr(10) & "Then Try To Change Resolution In Safe Mode.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
' break
Case Else
MessageBox.Show("Description: Failed To Change The Resolution.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
' break
End Select
End If
End If
End Sub
End Class
End Class
推荐答案
你为什么转发这个问题?我已经为您提供了答案的链接。
Why have you reposted this question? I have already provided you with links to the answer.
这篇关于Vb.net:如何获得我的显示器支持的屏幕尺寸的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文