王朝网络
分享
 
 
 

VB中调用Windows API函数检测当前系统环境

王朝厨房·作者佚名  2007-01-04
宽屏版  字体: |||超大  

杨洪勇

(山东农业大学)

摘要 本文介绍了在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系统达到了最完美的结合。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有