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。


发布评论