新聞中心
學(xué)習(xí)VB.NET時,你可能會遇到VB.NET調(diào)用API函數(shù)問題,這里將介紹VB.NET調(diào)用API函數(shù)問題的解決方法,在這里拿出來和大家分享一下。

創(chuàng)新互聯(lián),為您提供重慶網(wǎng)站建設(shè)公司、重慶網(wǎng)站制作、網(wǎng)站營銷推廣、網(wǎng)站開發(fā)設(shè)計,對服務(wù)成都汽車玻璃修復(fù)等多個行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗。創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報價服務(wù),我們深知市場的競爭激烈,認(rèn)真對待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進步,是我們永遠(yuǎn)的責(zé)任!
在VB.NET中,我們很容易獲得顯示器的分辯率,但是,要改變顯示器的分辯率就比較麻煩了。由于。net的類庫沒有將 enumdisplaysettings 和ChangeDisplaySettings這兩個API函數(shù)進行封裝,但是我們得調(diào)用它們函數(shù),相對于VB6來說,VB.NET調(diào)用API函數(shù)是有一些小的改動!
下面,我們就嘗試一下VB.NET調(diào)用API函數(shù)。
新建一個項目,在form1上添加兩個按鈕,一個名為btngetdisp,將其text屬性設(shè)置為“得到分辯率”;另一個按鈕名為btnsetdisp,text屬性為“設(shè)置分辯率”。然后在代碼窗口里添加以下代碼:
- private Const CCDEVICENAME As Short = 32
- private Const CCFORMNAME As Short = 32
- private Const DM_PELSWIDTH As Integer = &H80000
- private Const DM_PELSHEIGHT As Integer = &H100000
- '刷新頻率常量
- private Const DM_DISPLAYFREQUENCY As Integer = &H400000
- '調(diào)用API函數(shù)
- private Declare Function EnumDisplaySettings Lib "user32" Alias
- "EnumDisplaySettingsA" (ByVal lpszDeviceName As Integer,
- ByVal iModeNum As Integer, ByRef lpDevMode As DEVMODE) As Boolean
- '調(diào)用api函數(shù)
- private Declare Function ChangeDisplaySettings Lib "user32" Alias
- "ChangeDisplaySettingsA" (ByRef lpDevMode As DEVMODE,
- ByVal dwflags As Integer) As Integer
- '定義結(jié)構(gòu)
- private Structure DEVMODE
- Public dmDeviceName As String
- dim dmSpecVersion As Short
- dim dmDriverVersion As Short
- dim dmSize As Short
- dim dmDriverExtra As Short
- dim dmFields As Integer
- dim dmOrientation As Short
- dim dmPaperSize As Short
- dim dmPaperLength As Short
- dim dmPaperWidth As Short
- dim dmScale As Short
- dim dmCopies As Short
- dim dmDefaultSource As Short
- dim dmPrintQuality As Short
- dim dmColor As Short
- dim dmDuplex As Short
- dim dmYResolution As Short
- dim dmTTOption As Short
- dim dmCollate As Short
- Public dmFormName As String
- dim dmUnusedPadding As Short
- dim dmBitsPerPel As Short
- dim dmPelsWidth As Integer
- dim dmPelsHeight As Integer
- dim dmDisplayFlags As Integer
- dim dmDisplayFrequency As Integer
- end Structure
- '改變分辯率過程,參數(shù)一寬度,參數(shù)二高度
- private Sub ChangeDisp(ByRef iWidth As Single, ByRef iHeight As Single)
- dim blnWorked As Boolean
- dim i As Integer
- dim DevM As Form1.DEVMODE
- i = 0
- do
- blnworked = EnumDisplaySettings(0, i, DevM)
- ii = i + 1
- loop Until (blnWorked = False)
- with DevM
- .dmfields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY
- .dmpelswidth = iWidth
- .dmpelsheight = iHeight
- '刷新頻率為85
- .dmdisplayfrequency = 85
- end With
- call ChangeDisplaySettings(DevM, 0)
- end Sub
- private Sub btnGetDisp_Click(ByVal sender As System.Object,
- ByVal e As System.EventArgs) Handles btnGetDisp.Click
- dim X As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
- dim Y As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
- msgbox("您的顯示器分辨率是" & X & " X " & Y)
- end Sub
- private Sub btnSetDisp_Click(ByVal sender As System.Object,
- ByVal e As System.EventArgs) Handles btnSetDisp.Click
- if MsgBox("您確認(rèn)要將顯示器分辨率改為1024x768嗎?", MsgBoxStyle.OKCancel,
- "系統(tǒng)消息") = MsgBoxResult.OK Then
- '調(diào)用改變分辯率過程
- changedisp(1024, 768)
- end If
- end Sub
【編輯推薦】
- 簡單分析VB.NET臨時文件
- 詳細(xì)描述VB.NET PadLeft方法
- VB.NET Shared變量經(jīng)驗總結(jié)
- 全面講解VB.Net賦值語句
- 淺析VB.NET創(chuàng)建PPC客戶端程序
當(dāng)前標(biāo)題:全面剖析VB.NET調(diào)用API函數(shù)
分享URL:http://fisionsoft.com.cn/article/copjsgs.html


咨詢
建站咨詢
