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

前端之家收集整理的这篇文章主要介绍了使用VB.NET实现改变显示器的分辨率实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在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,是不是很简单?

原文链接:https://www.f2er.com/vb/262892.html

猜你在找的VB相关文章