全面剖析VB.NET调用API函数

开发 后端
这里介绍VB.NET调用API函数,在VB.NET中,我们很容易获得显示器的分辩率,但是,要改变显示器的分辩率就比较麻烦了。

学习VB.NET时,你可能会遇到VB.NET调用API函数问题,这里将介绍VB.NET调用API函数问题的解决方法,在这里拿出来和大家分享一下。

在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  
  5. '刷新频率常量  
  6. private Const DM_DISPLAYFREQUENCY As Integer = &H400000  
  7. '调用API函数  
  8. private Declare Function EnumDisplaySettings Lib "user32" Alias  
  9. "EnumDisplaySettingsA" (ByVal lpszDeviceName As Integer,  
  10. ByVal iModeNum As Integer, ByRef lpDevMode As DEVMODE) As Boolean  
  11. '调用api函数  
  12. private Declare Function ChangeDisplaySettings Lib "user32" Alias  
  13. "ChangeDisplaySettingsA" (ByRef lpDevMode As DEVMODE,  
  14. ByVal dwflags As Integer) As Integer  
  15. '定义结构  
  16. private Structure DEVMODE  
  17. Public dmDeviceName As String  
  18. dim dmSpecVersion As Short  
  19. dim dmDriverVersion As Short  
  20. dim dmSize As Short  
  21. dim dmDriverExtra As Short  
  22. dim dmFields As Integer  
  23. dim dmOrientation As Short  
  24. dim dmPaperSize As Short  
  25. dim dmPaperLength As Short  
  26. dim dmPaperWidth As Short  
  27. dim dmScale As Short  
  28. dim dmCopies As Short  
  29. dim dmDefaultSource As Short  
  30. dim dmPrintQuality As Short  
  31. dim dmColor As Short  
  32. dim dmDuplex As Short  
  33. dim dmYResolution As Short  
  34. dim dmTTOption As Short  
  35. dim dmCollate As Short  
  36. Public dmFormName As String  
  37. dim dmUnusedPadding As Short  
  38. dim dmBitsPerPel As Short  
  39. dim dmPelsWidth As Integer  
  40. dim dmPelsHeight As Integer  
  41. dim dmDisplayFlags As Integer  
  42. dim dmDisplayFrequency As Integer  
  43. end Structure  
  44. '改变分辩率过程,参数一宽度,参数二高度  
  45. private Sub ChangeDisp(ByRef iWidth As Single, ByRef iHeight As Single)  
  46. dim blnWorked As Boolean  
  47. dim i As Integer  
  48. dim DevM As Form1.DEVMODE  
  49. i = 0 
  50. do  
  51. blnworked = EnumDisplaySettings(0, i, DevM)  
  52. ii = i + 1  
  53. loop Until (blnWorked = False)  
  54. with DevM  
  55. .dmfields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY  
  56. .dmpelswidth = iWidth 
  57. .dmpelsheight = iHeight 
  58. '刷新频率为85  
  59. .dmdisplayfrequency = 85 
  60. end With  
  61. call ChangeDisplaySettings(DevM, 0)  
  62. end Sub  
  63. private Sub btnGetDisp_Click(ByVal sender As System.Object,  
  64. ByVal e As System.EventArgs) Handles btnGetDisp.Click  
  65. dim X As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width  
  66. dim Y As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height  
  67. msgbox("您的显示器分辨率是" & X & " X " & Y)  
  68. end Sub  
  69. private Sub btnSetDisp_Click(ByVal sender As System.Object,  
  70. ByVal e As System.EventArgs) Handles btnSetDisp.Click  
  71. if MsgBox("您确认要将显示器分辨率改为1024x768吗?", MsgBoxStyle.OKCancel,  
  72. "系统消息") = MsgBoxResult.OK Then  
  73. '调用改变分辩率过程  
  74. changedisp(1024, 768)  
  75. end If  
  76. end Sub 

【编辑推荐】

  1. 简单分析VB.NET临时文件
  2. 详细描述VB.NET PadLeft方法
  3. VB.NET Shared变量经验总结
  4. 全面讲解VB.Net赋值语句
  5. 浅析VB.NET创建PPC客户端程序
责任编辑:佚名 来源: 51CTO.com
相关推荐

2009-11-03 12:52:38

VB.NET Wind

2009-10-23 10:01:28

VB.NET申明Win

2009-10-29 11:26:28

VB.NET调用Web

2009-10-26 10:44:27

VB.NET API函

2009-11-10 16:55:05

VB.NET调用API

2009-10-21 16:00:26

VB.NET CASE

2009-10-23 13:14:38

2009-10-28 10:04:53

VB.NET XmlW

2009-10-28 17:44:31

VB.NET语言

2010-01-18 17:29:35

VB.NET函数调用

2009-10-23 09:38:59

VB.NET平台调用

2009-10-16 18:01:06

VB.NET调用Win

2009-10-20 08:39:57

VB.NET输出函数

2009-10-19 17:42:31

VB.NET API函

2009-10-13 15:09:19

VB.NET使用Tre

2009-11-02 16:22:16

VB.NET面向对象

2009-10-28 14:00:02

VB.NET文件处理

2009-10-14 15:20:21

VB.NET窗体指针

2009-11-04 10:54:53

VB.NET MOVE

2009-10-29 15:16:02

VB.NET文件传送
点赞
收藏

51CTO技术栈公众号