杨洪勇
(山东农业大学)
摘要 本文介绍了在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系统达到了最完美的结合。 |
关键词: VB中调用Windows API函数检测当前系统环境