加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用VB.NET实现改变显示器的分辨率实例

发布时间:2020-12-16 23:27:10 所属栏目:大数据 来源:网络整理
导读:在VB.NET中,我们很容易获得显示器的分辩率,但是,要改变显示器的分辩率就比较麻烦了。由于.net的类库没有将enumdisplaysettings 和ChangeDisplaySettings这两个API函数进行封装,但是我们得调用它们函数,相对于VB6来说,VB.NET调用API函数是有一些小的改

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

下面,我们就尝试一下在vb.net中,使用这两个api函数。

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

Code:
  1. privateConstCCDEVICENAMEAsShort=32
  2. privateConstCCFORMNAMEAsShort=32
  3. privateConstDM_PELSWIDTHAsInteger=&H80000
  4. privateConstDM_PELSHEIGHTAsInteger=&H100000
  5. '刷新频率常量
  6. privateConstDM_DISPLAYFREQUENCYAsInteger=&H400000
  7. '调用API函数
  8. privateDeclareFunctionEnumDisplaySettingsLib"user32"Alias"EnumDisplaySettingsA"(ByVallpszDeviceNameAsInteger,ByValiModeNumAsInteger,ByReflpDevModeAsDEVMODE)AsBoolean
  9. '调用api函数
  10. privateDeclareFunctionChangeDisplaySettingsLib"user32"Alias"ChangeDisplaySettingsA"(ByReflpDevModeAsDEVMODE,ByValdwflagsAsInteger)AsInteger
  11. '定义结构
  12. privateStructureDEVMODE
  13. PublicdmDeviceNameAsString
  14. dimdmSpecVersionAsShort
  15. dimdmDriverVersionAsShort
  16. dimdmSizeAsShort
  17. dimdmDriverExtraAsShort
  18. dimdmFieldsAsInteger
  19. dimdmOrientationAsShort
  20. dimdmPaperSizeAsShort
  21. dimdmPaperLengthAsShort
  22. dimdmPaperWidthAsShort
  23. dimdmScaleAsShortdimdmCopiesAsShortdimdmDefaultSourceAsShortdimdmPrintQualityAsShortdimdmColorAsShort
  24. dimdmDuplexAsShortdimdmYResolutionAsShortdimdmTTOptionAsShortdimdmCollateAsShort
  25. PublicdmFormNameAsString
  26. dimdmUnusedPaddingAsShort
  27. dimdmBitsPerPelAsShort
  28. dimdmPelsWidthAsInteger
  29. dimdmPelsHeightAsInteger
  30. dimdmDisplayFlagsAsIntegerdimdmDisplayFrequencyAsIntegerendStructure
  31. '改变分辩率过程,参数一宽度,参数二高度
  32. privateSubChangeDisp(ByRefiWidthAsSingle,ByRefiHeightAsSingle)
  33. dimblnWorkedAsBoolean
  34. dimiAsInteger
  35. dimDevMAsForm1.DEVMODE
  36. i=0
  37. do
  38. blnworked=EnumDisplaySettings(0,i,DevM)
  39. i=i+1
  40. loopUntil(blnWorked=False)
  41. withDevM
  42. .dmfields=DM_PELSWIDTHOrDM_PELSHEIGHTOrDM_DISPLAYFREQUENCY
  43. .dmpelswidth=iWidth
  44. .dmpelsheight=iHeight
  45. '刷新频率为85
  46. .dmdisplayfrequency=85
  47. endWith
  48. callChangeDisplaySettings(DevM,0)
  49. endSub
  50. privateSubbtnGetDisp_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnGetDisp.Click
  51. dimXAsShort=System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
  52. dimYAsShort=System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
  53. msgbox("您的显示器分辨率是"&X&"X"&Y)
  54. endSub
  55. privateSubbtnSetDisp_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnSetDisp.Click
  56. ifMsgBox("您确认要将显示器分辨率改为1024x768吗?",MsgBoxStyle.OKCancel,"系统消息")=MsgBoxResult.OKThen'调用改变分辩率过程
  57. changedisp(1024,768)
  58. endIf
  59. endSub

程序运行如下图所示,点击设置分辩率,将会把显示器分辨率改为1024x768,刷新频率为85,是不是很简单?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读