明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

VB中調(diào)用Windows API函數(shù)檢測當前系統(tǒng)環(huán)境

[摘要]楊洪勇(山東農(nóng)業(yè)大學)摘要 本文介紹了在Visual Basic中用 Declare語句聲明所要調(diào)用的Windows API的方法,以及如何調(diào)用API函數(shù)來檢測當前的系統(tǒng)環(huán)境。用Visual Bas...
楊洪勇

(山東農(nóng)業(yè)大學)


摘要 本文介紹了在Visual Basic中用 Declare語句聲明所要調(diào)用的Windows API的方法,以及如何調(diào)用API函數(shù)來檢測當前的系統(tǒng)環(huán)境。用Visual Basic能夠直接控制和處理計算機的系統(tǒng)參數(shù)和硬件資源,增加了程序設(shè)計人員在Windows環(huán)境中開發(fā)軟件的靈活性,使軟件與Windows系統(tǒng)達到了最完美的結(jié)合。本文最后給出了一個調(diào)用的Windows API的檢測系統(tǒng)環(huán)境實例。
關(guān)鍵字 Visual Basic Declare 語句 Windows API函數(shù) 系統(tǒng)

前言
Visual Basic是一個Windows系統(tǒng)下的應用程序開發(fā)平臺。方便的界面設(shè)計、強大的擴充能力使程序員能節(jié)省大量時間,把主要精力集中在應用程序核心代碼的編寫上。Visual Basic目前已成為Windows系統(tǒng)下一種高效靈活的開發(fā)工具,而調(diào)用API(Application Program Interface,應用程序接口)函數(shù)正是對Visual Basic功能的強有力擴充,它使得Visual Basic能夠直接控制和處理計算機的系統(tǒng)參數(shù)和硬件資源。借助于API使得Visual Basic能克服Windows編程的難點,同時又增加供了使用Windows環(huán)境的靈活性。
利用Visual Basic調(diào)用API函數(shù)的方法:
(1)用Declare語句聲明所要調(diào)用的API函數(shù),若該函數(shù)無返回值,可聲明為Sub過程;若有返回值,則可聲明為Function函數(shù)。
(2)一旦聲明了某一個API函數(shù)后,就可以象調(diào)用Visual Basic的函數(shù)一樣。但如果參數(shù)傳遞不對,可能會導致死機。

一、檢測系統(tǒng)參數(shù)的API函數(shù)
檢測系統(tǒng)環(huán)境的參數(shù)所需要的Windows API函數(shù)有GetWindowsDirectory,GetWinFlags,GetVersion,GetKeyboardType等,具體的使用方法見下面聲明。
1.GetWinflags聲明
Declare Function GetWinflags Lib "kernel32" () As Long
功能:該函數(shù)返回Windows運行系統(tǒng)上的系統(tǒng)配置。

返回標志值
含意
WF_80X87
Intel數(shù)字協(xié)處理器
WF_CPU386
80386 CPU
WF_CPU486
80486 CPU
WF_ENHANCED
Windows 系統(tǒng)運行在386增強模式
WF_PMODE
Windows 系統(tǒng)運行在保護模式
WF_STANDARD
Windows 系統(tǒng)運行在標準模式
WF_WLO
運行在OS/2下

2.GetKeyboardType聲明
Declare Function GetKeyboardType Lib "user32" (ByVal nTypeFlag As Long) As Long
功能:該函數(shù)得到系統(tǒng)鍵盤類型,nTypeFlag=0時返回鍵盤類型。

返回值
含意
1
IBM PC/XT 或兼容鍵盤
2
Olivetti "ICO" 鍵盤(102個鍵)
3
IBM 或兼容鍵盤(84個鍵)
4
IBM 增強型或相似鍵盤(101或102個鍵)
5
Nokia1050或相似鍵盤
6
Nokia9140或相似鍵盤
7
日本鍵盤

3.GetWindowsDirectory聲明
Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
功能:該函數(shù)獲取Windows目錄的路徑。  

4.GetVersion聲明
Declare Function GetVersion Lib "kernel32" () As Long
功能:該函數(shù)返回當前Windows版本號和DOS版本號。返回值的低位字節(jié)說明Windows主版本號,返回值的低位字的高位字節(jié)說明Windows副版本號,高位字的低位字節(jié)說明DOS副版本號,高位字的高位字節(jié)說明DOS主版本號。

5.GetSystemDirectory聲明
Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA"
(ByVal lpBuffer As String, ByVal nSize As Long) As Long
功能:該函數(shù)獲取Windows系統(tǒng)子目錄的路徑。

二、檢測系統(tǒng)參數(shù)程序?qū)嵗?br>有了上面對所需Windows API函數(shù)的聲明以后,就可以使用這些API函數(shù),編寫下面的用戶自定義函數(shù)。
1.檢測系統(tǒng)子目錄函數(shù)
Function WinDir()
Temp = Space$(255)
StringLen = GetWindowsDirectory(Temp, 255)
WinDir = Left$(Temp, StringLen)
End Function

2.檢測系統(tǒng)鍵盤函數(shù)
Function KeyType()
KbType = GetKeyboardType(0)
Select Case KbType
Case 1
KeyType="IBM PC\XT,or compatible"
Case 2
KeyType="Olivetti 'ICO'(102key)"
Case 3
KeyType="IBM AT/similar(84keys)"
Case 4
KeyType = "IBM Enhance(101/102 keys)"
Case 5
KeyType = "Nokia1050/similar"
Case 6
KeyType = "Nokia9140/similar"
Case 7
KeyType = "Japan Keyboard"
End Select
End Function

3.檢測Windows版本號函數(shù)
Function WinVer()
ver& = GetVersion()
winhigh = ver& Mod 256
winlow = Int(ver& / 256) Mod 256
WinVer = ((winhigh * 100) + winlow) / 100
End Function

4.檢測系統(tǒng)CPU函數(shù)
Function CPU()
Flags&=GetWinFlags()
Match=1
Select Case Match
Case (Flags& And &H8)\&H8
CPU=486
Case (Flags& And &H4)\&H4
CPU=386
End Select
End Function

5.檢測Windows運行模式函數(shù)
Function Mode()
Flags&=GetWinFlags()
If flags& And &H20 Then
Mode="Enhanced"
Else
Mode="Standard"
End If
End Function
(二) 建 立 窗 體 文 件Form1.frm
Form1.Caption="System Information"
Sub Form_Load()
Cls
Print
Print , "System Information"
Print
Print , "WindowsDir: ", WinDir()
Print , "KeyboardType: ", KeyType()
Print , "WindowsVersion: ", WinVer()
Print , "SystemCpu: ", CPU()
Print , "WindowsMode: ", Mode()
End Sub

在Visual Basic中用 Declare語句聲明所要調(diào)用的Windows API函數(shù), 使得程序設(shè)計者在Visual Basic中能夠直接控制和處理計算機的系統(tǒng)參數(shù)和硬件資源,增加了程序設(shè)計者在Windows環(huán)境中開發(fā)軟件的靈活性,使軟件與Windows系統(tǒng)達到了最完美的結(jié)合。