2024年3月27日发(作者:)

获取计算机系统信息

Visual 拥有许多VB开发者以前只能梦想的新功能和新

特色。比如说,在VB6中只有通过复杂的Win32 API函数调用才能获

得的系统信息,到了,就可以以多种方法轻松的获取。

一、Environment类轻松获取系统信息

.NET Framework中的nment类提供了丰富而简

单的方法取得有关当前环境和平台的系统信息,如计算机名称、系统

目录等:

获取计算机的 NetBIOS 名称:

Environment类的MachineName属性可以轻松获取此本地计算

机的 NetBIOS 名称,如:

eName

获取操作系统标识符和版本号:

Environment类的OSVersion可以轻松获取当前操作系统标识符

和版本号,如:

= "操作系统:" & ng

获取系统目录:

Environment类的SystemDirectory属性可以轻松取得系统目录:

= "系统目录:" &

Directory

获取系统启动后经过的时间:

Environment类的TickCount属性可以轻松获取系统启动后经过

的毫秒数,如:

= "系统已经启动了:" &

= "机器名:" &

CStr(unt / 1000) & "秒"

获取系统特殊文件夹的路径:

使用Environment类的GetFolderPath方法可以轻松获得系统特

殊文件夹的路径,如:

es)

获取当前用户名:

Environment类的UserName属性可以轻松获取当前用户名,如:

= "用户:" & me

二、SystemInformation类轻松获取系统信息

通过SystemInformation类也可以轻松取得如计算机名等操作系

统的有关信息:

获取系统的启动方式:

使用 BootMode 可确定用户如何启动系统。对于在 Windows 98

上运行的应用程序,可以使用此属性来确定操作系统是否处于防故障

模式。如:

Select Case de

Case

= "启动模式:正常启动"

Case fe

= "启动模式:安全模式"

Case feWithNetwork

= "启动模式:(带网络驱动的)安全模式"

End Select

获取显示器信息如屏幕像素值、数目等:

= "主显示器的尺寸为:" &

_

= "我的收藏夹:" & _

derPath(t

& "*" & & "

像素"

= "监视器数目:" &

rCount

获取鼠标相关信息:

= "鼠标的按钮数为:" &

uttons

If

三、通过WMI轻松获取系统信息

WMI即Windows 管理规范,作为一种标准的接口,它提供了组

织和管理如程序、网络、打印机及驱动程序等系统信息的方法。应该

说明的是,WMI并不是.NET的一部分(在Win2k控制面板“服务”

中可以看到作为基本服务存在的Windows Management

Instrumentation)。但中通过ment命名

空间提供了对WMI访问简单易行的方法,我们只要通过类似SQL的

查询语句就可轻松取得系统信息:

例如获取主板信息:

Dim searcher As New ManagementObjectSearcher("select *

from Win32_baseboard")

‘ ManagementObjectSearcher类根据指定的查询检索WMI对

象的集合。

Dim baseboard As ManagementObject

For Each baseboard In ()

MsgBox("主板制造商:" & baseboard("Manufacturer"))

MsgBox("型号:" & baseboard("Product"))

MsgBox("序列号:" & baseboard("SerialNumber"))

MsgBox("主板所有信息:" &

heelPresent Then

&= "(带鼠标轮)"

t())

‘MOF表示采用一样托管对象格式显示

Next

同样,我们通过诸如“select * from Win32_BIOS”这样的语句,

使用从ManagementObjectSearcher和ManagementQuery派生的

类,就能获取几乎所有的系统信息。

四、Win32 API获取系统信息

VB高手应该感到高兴,尽管为我们新增了许多更简便而

安全的方法,但我们以前悬梁刺股掌握的Win32 API知识仍是

Windows编程中最有效的武器之一。.NET框架为我们提供了

pServices名字空间保持对Win32 API的兼

容。例如,通过Win32 API获取CPU的相关信息:

Private Structure SYSTEM_INFO

Dim dwOemID As Integer

Dim dwPageSize As Integer

Dim lpMinimumApplicationAddress As Integer

Dim lpMaximumApplicationAddress As Integer

Dim dwActiveProcessorMask As Integer

Dim dwNumberOrfProcessors As Integer

Dim dwProcessorType As Integer

Dim dwAllocationGranularity As Integer

Dim dwReserved As Integer

End Structure

Private Declare Sub GetSystemInfo Lib "kernel32" Alias

"GetSystemInfo" (ByRef lpSystemInfo As SYSTEM_INFO)

Private Sub FrmAPI_Load(ByVal sender As ,

ByVal e As rgs) Handles

Dim cpuInfo As New SYSTEM_INFO()

GetSystemInfo(cpuInfo)

= "系统中有" &

ng() & "类型的

ng() & "个"

&= "。CPU OEMID为

CPU" &

:" &

ng() & "。CPU页面大小:" &

Size

End Sub

要注意在调用API时VB的一些语言变化,如定义结构由Type语

句变为了structure语句,Long数据类型变成了Integer。