轻松完成VB.NET变更显示器分辨率

开发 后端
VB.NET变更显示器分辨率的实现,可以使用几个相关函数来进行操作。而且利用VB.NET语言机进行这一功能的实现,其操作步骤非常简单。

VB.NET中的各种特点极大的吸引了开发人员的眼球。当我们想要利用这款语言进行移动设备的操作时,将会发现其应用方式是非常简单的。那么我们就一起来看看VB.NET变更显示器分辨率的相关操作。#t#

在VB.NET中,我们很容易获得显示器的分辩率,但是,要改变显示器的分辩率就比较麻烦了。由于.NET的类库没有将EnumDisplaySettings 和ChangeDisplaySettings这两个API函数进行封装,但是我们得调用它们函数,相对于VB6来说,VB.NET调用API函数是有一些小的改动!

下面,我们就尝试一下在VB.NET变更显示器分辨率中,使用这两个API函数。

新建一个项目,在Form1上添加两个按钮,一个名为btnGetDisp,将其Text属性设置为“得到分辩率”;另一个按钮名为btnSetDisp,Text属性为“设置分辩率”。然后在代码窗口里添加以下代码:

  1. Private Const CCDEVICENAME 
    As 
    Short = 32   
  2. Private Const CCFORMNAME 
    As 
    Short = 32   
  3. Private Const DM_PELSWIDTH 
    As 
    Integer = &H80000   
  4. Private Const DM_PELSHEIGHT 
    As 
    Integer = &H100000  

刷新频率常量

  1. Private Const DM_
    DISPLAYFREQUENCY As 
    Integer = &H400000  

调用API函数实现VB.NET变更显示器分辨率

  1. Private Declare Function 
    EnumDisplaySettings Lib 
    "user32" Alias "EnumDis
    playSettingsA"   
  2. (ByVal lpszDeviceName As 
    Integer, ByVal iModeNum As 
    Integer, ByRef lpDevMode 
    As DEVMODE) As Boolean  

调用API函数

  1. Private Declare Function 
    ChangeDisplaySettings Lib 
    "user32" Alias "Change
    DisplaySettingsA"   
  2. (ByRef lpDevMode As 
    DEVMODE, ByVal dwflags 
    As Integer) As Integer  

定义结构进行VB.NET变更显示器分辨率的操作

  1. Private Structure DEVMODE   
  2. < VBFixedString(CCDEVICENAME), 
    System.Runtime.InteropServices.
    MarshalAs   
  3. (System.Runtime.InteropServices.
    UnmanagedType.ByValTStr, 
    SizeConst:=CCDEVICENAME)> 
    Public dmDeviceName As String   
  4. Dim dmSpecVersion As Short   
  5. Dim dmDriverVersion As Short   
  6. Dim dmSize As Short   
  7. Dim dmDriverExtra As Short   
  8. Dim dmFields As Integer   
  9. Dim dmOrientation As Short   
  10. Dim dmPaperSize As Short   
  11. Dim dmPaperLength As Short   
  12. Dim dmPaperWidth As Short   
  13. Dim dmScale As Short   
  14. Dim dmCopies As Short   
  15. Dim dmDefaultSource As Short   
  16. Dim dmPrintQuality As Short   
  17. Dim dmColor As Short   
  18. Dim dmDuplex As Short   
  19. Dim dmYResolution As Short   
  20. Dim dmTTOption As Short   
  21. Dim dmCollate As Short   
  22. < VBFixedString(CCFORMNAME), 
    System.Runtime.InteropServices
    .MarshalAs   
  23. (System.Runtime.InteropServices
    .UnmanagedType.ByValTStr, 
    SizeConst:=CCFORMNAME)> 
    Public dmFormName As String   
  24. Dim dmUnusedPadding As Short   
  25. Dim dmBitsPerPel As Short   
  26. Dim dmPelsWidth As Integer   
  27. Dim dmPelsHeight As Integer   
  28. Dim dmDisplayFlags As Integer   
  29. Dim dmDisplayFrequency As Integer   
  30. End Structure  

改变分辩率过程,参数一宽度,参数二高度

  1. Private Sub ChangeDisp(ByRef 
    iWidth As Single, ByRef 
    iHeight As Single)   
  2. Dim blnWorked As Boolean   
  3. Dim i As Integer   
  4. Dim DevM As Form1.DEVMODE   
  5. i = 0   
  6. Do   
  7. blnWorked = EnumDisplaySettings
    (0, i, DevM)   
  8. ii = i + 1   
  9. Loop Until (blnWorked = False)   
  10. With DevM   
  11. .dmFields = DM_PELSWIDTH Or 
    DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY   
  12. .dmPelsWidth = iWidth   
  13. .dmPelsHeight = iHeight  

刷新频率为85

  1. .dmDisplayFrequency = 85   
  2. End With   
  3. Call ChangeDisplaySettings
    (DevM, 0)   
  4. End Sub   
  5. Private Sub btnGetDisp_Click
    (ByVal sender As System.Object, 
    ByVal e As System.EventArgs) 
    Handles btnGetDisp.Click   
  6. Dim X As Short = System.Windows
    .Forms.Screen.PrimaryScreen.
    Bounds.Width   
  7. Dim Y As Short = System.Windows.
    Forms.Screen.PrimaryScreen.
    Bounds.Height   
  8. MsgBox("您的显示器分辨率是" & 
    X & " X " & Y)   
  9. End Sub   
  10. Private Sub btnSetDisp_Click(ByVal 
    sender As System.Object, 
    ByVal e As System.EventArgs) 
    Handles btnSetDisp.Click   
  11. If MsgBox("您确认要将显示器分辨率改
    为1024x768吗?", MsgBoxStyle.OKCancel, 
    "系统消息") = MsgBoxResult.OK Then   
  12. '调用改变分辩率过程   
  13. ChangeDisp(1024, 768)   
  14. End If   
  15. End Sub  

VB.NET变更显示器分辨率的程序运行后,点击设置分辩率,将会把显示器分辨率改为1024x768。

责任编辑:曹凯 来源: IT168
相关推荐

2009-10-27 15:49:11

VB.NET分辩率

2010-01-18 10:13:08

VB.NET获取CPU

2017-07-24 10:42:34

显示器分辨率落幕

2009-10-15 17:50:48

VB.NET调用API

2021-09-24 10:25:44

苹果MacBook PromacOS

2018-03-02 15:39:18

显示器分辨率主流

2022-02-21 21:37:42

办公显示器分辨率

2010-01-11 15:12:30

VB.NET特殊窗体

2018-09-28 16:06:50

显示器参数分辨率

2010-01-13 18:28:21

VB.NET历史菜单

2010-01-14 11:00:48

VB.NET文件合并

2009-10-30 14:45:42

Flash控制VB.N

2010-01-14 13:59:01

2010-01-13 17:47:59

VB.NET拖放

2009-11-03 09:37:33

VB.NET重载

2009-10-29 15:02:04

VB.NET文件排序

2009-11-02 15:49:23

VB.NET显示系统信

2010-01-14 10:07:08

VB.NET文件名排序

2010-01-11 18:40:03

VB.NET操作注册表

2010-01-18 19:36:52

VB.NET调整控件
点赞
收藏

51CTO技术栈公众号