VB中调用Windows API函数检测当前系统环境
发表于:2007-07-14来源:作者:点击数:
标签:
杨洪勇 (山东农业大学) 摘要 本文介绍了在Visual Basic中用 Declare语句声明所要调用的Windows API的方法,以及如何调用API函数来检测当前的系统环境。用Visual Basic能够直接控制和处理计算机的系统参数和硬件资源,增加了程序设计人员在Windows环境中 开
杨洪勇
(山东农业大学)
摘要 本文介绍了在Visual Basic中用 Declare语句声明所要调用的Windows API的方法,以及如何调用API函数来检测当前的系统环境。用Visual Basic能够直接控制和处理计算机的系统参数和硬件资源,增加了程序设计人员在Windows环境中
开发软件的灵活性,使软件与
Windows系统达到了最完美的结合。本文最后给出了一个调用的Windows API的检测系统环境实例。
关键字 Visual Basic Declare 语句 Windows API函数 系统
前言
Visual Basic是一个Windows系统下的应用程序开发平台。方便的界面设计、强大的扩充能力使
程序员能节省大量时间,把主要精力集中在应用程序核心代码的编写上。Visual Basic目前已成为Windows系统下一种高效灵活的开发工具,而调用API(Application Program Interface,应用程序接口)函数正是对Visual Basic功能的强有力扩充,它使得Visual Basic能够直接控制和处理计算机的系统参数和硬件资源。借助于API使得Visual Basic能克服Windows编程的难点,同时又增加供了使用Windows环境的灵活性。
利用Visual Basic调用API函数的方法:
(1)用Declare语句声明所要调用的API函数,若该函数无返回值,可声明为Sub过程;若有返回值,则可声明为Function函数。
(2)一旦声明了某一个API函数后,就可以象调用Visual Basic的函数一样。但如果参数传递不对,可能会导致死机。
一、检测系统参数的API函数
检测系统环境的参数所需要的Windows API函数有GetWindowsDirectory,GetWinFlags,GetVersion,GetKeyboardType等,具体的使用方法见下面声明。
1.GetWinflags声明
Declare Function GetWinflags Lib "kernel32" () As Long
功能:该函数返回Windows运行系统上的系统配置。
返回标志值
含意
WF_80X87
Intel数字协处理器
WF_CPU386
80386 CPU
WF_CPU486
80486 CPU
WF_ENHANCED
Windows 系统运行在386增强模式
WF_PMODE
Windows 系统运行在保护模式
WF_STANDARD
Windows 系统运行在标准模式
WF_WLO
运行在OS/2下
2.GetKeyboardType声明
Declare Function GetKeyboardType Lib "user32" (ByVal nTypeFlag As Long) As Long
功能:该函数得到系统键盘类型,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
功能:该函数获取Windows目录的路径。
4.GetVersion声明
Declare Function GetVersion Lib "kernel32" () As Long
功能:该函数返回当前Windows版本号和DOS版本号。返回值的低位字节说明Windows主版本号,返回值的低位字的高位字节说明Windows副版本号,高位字的低位字节说明DOS副版本号,高位字的高位字节说明DOS主版本号。
5.GetSystemDirectory声明
Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA"
(ByVal lpBuffer As String, ByVal nSize As Long) As Long
功能:该函数获取Windows系统子目录的路径。
二、检测系统参数程序实例
有了上面对所需Windows API函数的声明以后,就可以使用这些API函数,编写下面的用户自定义函数。
1.检测系统子目录函数
Function WinDir()
Temp = Space$(255)
StringLen = GetWindowsDirectory(Temp, 255)
WinDir = Left$(Temp, StringLen)
End Function
2.检测系统键盘函数
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版本号函数
Function WinVer()
ver& = GetVersion()
winhigh = ver& Mod 256
winlow = Int(ver& / 256) Mod 256
WinVer = ((winhigh * 100) + winlow) / 100
End Function
4.检测系统CPU函数
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运行模式函数
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语句声明所要调用的Windows API函数, 使得程序设计者在Visual Basic中能够直接控制和处理计算机的系统参数和硬件资源,增加了程序设计者在Windows环境中开发软件的灵活性,使软件与Windows系统达到了最完美的结合。
原文转自:http://www.ltesting.net