delphi中WMI的使用(网卡是否接入)
WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。
通过使用WMI,我们可以很方便的获取到电脑的系统信息,但是很遗憾的是,我在网上找到的基本上都是对于某个功能的实现,比如查询IP,获取计算机名称,检测操作系统信息等等,如果只是在工作中用到了来查一下是没有问题的,但是,要想全面的了解WMI中的类库,来系统的掌握就很困难,WMI中有哪些系统的类,里面有哪些属性,这些属性都代表什么意思?MSND上面对于vbscript脚本实现的教程很详细,但是具体在delphi中对应的类型和参数名称是不一样的。
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls ,ActiveX,comobj; type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} //网卡是否接入
function GetNetworkConnected(const sName: string): boolean;
var
C: Cardinal;
Enum: IEnumVariant;
Wmi, Objs, Obj, V: OleVariant;
begin
Result := False;
Wmi := CreateOleObject('WbemScripting.SWbemLocator');
try
// ConnectServer无参表示连接本机 NetConnectionStatus=2 表示已经接入 7表示断开
Objs := Wmi.ConnectServer().ExecQuery('Select * from Win32_NetworkAdapter WHERE NetConnectionStatus=2');
Enum := IEnumVariant(IUnknown(Objs._NewEnum));
Enum.Reset;
//迭代信息
while Enum.Next(, Obj, C) = S_OK do
begin
V := Obj.Properties_.Item('Name', ).Value;
if VarIsClear(V) or VarIsNull(V) then
Continue;
if V=sName then
begin
Result:=True;
Break
end;
end;
finally
Wmi := Unassigned;
end;
end; procedure TForm1.Button1Click(Sender: TObject); begin
ShowMessage(booltostr(GetNetworkConnected(Edit1.Text)));
end; end.
因为WMI中通用的类大多是Win32_开头的,这里只需要传递后面的部分。
那么下一步,怎么知道我需要的是什么参数呢?以获取计算机名为例:
str := GetWMIProperty('OperatingSystem','CSName');即可获得。
当然,计算机名信息是比较常用的,在好几个类里面都有。
Win32_开头的类有:
Win32_IP4RouteTable
Win32_NetworkAdapterConfiguration
Win32_NetworkAdapterSetting
Win32_NetworkConnection
Win32_PhysicalMedia
Win32_POTSModemToSerialPort
Win32_PrinterConfiguration
Win32_SerialPortConfiguration
Win32_SerialPortSetting
Win32_SoundDevice
Win32_SystemBIOS
Win32_TapeDrive
Win32_USBControllerDevice
Win32_VideoController
Win32_VideoSettings
Win32_NetworkAdapter 网卡 参数说明
AdapterType --适配器的类型
AdapterTypeID --适配器的类型ID
AutoSense --如果为True,网络适配器能自动判断连接或网络媒体的速度
Availability --可用性和设备的状态
Caption --设备的简短描述
ConfigManagerErrorCode --Windows配置管理器错误代码
ConfigManagerUserConfig --如果为True,该设备使用用户定义的配置
CreationClassName --第一个具体类的名称出现在创建实例所使用的继承链
Description --描述
DeviceID --系统中的其他设备的网络适配器的唯一标识符
ErrorCleared --如果为True,在上一个错误代码报告现已清除
ErrorDescription --错误的描述信息
GUID --全局唯一标识符进行连接
Index --存储在系统注册表中网络适配器的索引号
InstallDate --日期和时间对象安装
Installed --如果为True,网络适配器安装在系统中
InterfaceIndex --索引值唯一标识本地网络接口
LastErrorCode --报告的逻辑设备上一个错误代码
MACAddress --MAC地址
Manufacturer --制造商的名称
MaxNumberControlled --通过这个网络适配器支持直接寻址的端口的最大数量
MaxSpeed --最大速度,以每秒位数,为网络适配器
Name --适配器的名称
NetConnectionID --网络连接的名称出现在网络连接控制面板程序
NetConnectionStatus --网络适配器连接至网络的状态
NetEnabled --指明适配器是否已启用。如果为True,适配器已启用。您可以启用或通过启用和禁用方法禁用网卡。
NetworkAddresses --适配器的IP地址
PermanentAddress --网络地址硬编码到一个适配器。这种硬编码地址,可以通过固件升级或软件配置进行更改
PhysicalAdapter --指明适配器是否是物理或逻辑适配器。如果为True,适配器是物理
PNPDeviceID --即插即用逻辑设备的播放设备标识符
PowerManagementCapabilities --逻辑设备的特定功率相关的能力阵列
PowerManagementSupported --如果为True,该设备可以是电源管理(可放进入暂停模式,等等)
ProductName --网络适配器的产品名称
ServiceName --网络适配器的服务名
Speed --估计当前带宽比特每秒
Status --对象的当前状态
StatusInfo --对象的当前状态详细信息
SystemCreationClassName --该作用域计算机的创建类别名称属性的值
SystemName --系统名称
TimeOfLastReset --最后复位日期和时间的网络适配器
delphi中WMI的使用(网卡是否接入)的更多相关文章
- 在delphi中生成GUID
什么是 GUID ? 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装.在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID. GUID 的格式为 ...
- 在delphi中生成GUID/自动获取临时表名......
什么是 GUID ? 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装.在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID. GUID 的格式为 ...
- 奇淫怪巧之在Delphi中调用不申明函数
前一阵子,研究了一段时间的Win32Asm,研究到后来发现Win32的ASM实际上还是和C版的介绍的一样.甚至还封装了一个简版的类似VCL库结构框架的32ASM结构库,不过搞着搞着就没兴趣了,也没继续 ...
- Delphi中预编译指令
本文转自 http://www.cnblogs.com/JackSun/archive/2010/12/20/1911250.html <Delphi下深入Windows核心编程>(附录A ...
- Delphi中stringlist分割字符串的用法
Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaT ...
- delphi中exit,abort,break,continue 的区别
from:http://www.cnblogs.com/taofengli288/archive/2011/09/05/2167553.html delphi中表示跳出的有break,continue ...
- Delphi中使用比较少的一些语法
本文是为了加强记忆而写,这里写的大多数内容都是在编程的日常工作中使用频率不高的东西,但是又十分重要. ---Murphy 1,构造和析构函数: a,构造函数: 一般基于TComponent组件的派生类 ...
- 如何在 Delphi 中静态链接 SQLite
搞了我几个小时,终于成功在 Delphi 中静态链接了 SQLite (v3.5.4),下一步就是研究加密了,呵呵中间其实遇到很多问题,今天累了,就不说了,改天补上 下载测试工程 下面说说方法 1.当 ...
- 翻箱倒柜,《Delphi中建议使用的语句》
(*//标题:Delphi中建议使用的语句整理:Zswang连接:http://www.csdn.net/Expert/TopicView1.asp?id=724036日期:2002-06-22支持: ...
随机推荐
- DevExpress控件安装破解和汉化使用教程
这段时间因公司业务需要.net开发且需要用到DevExpress控件,我自己研究学习了一下,用的是visual studio(2013)和DevExpress(V14.1.4),VS2013的下载安装 ...
- Vue基本使用
Vue.js是一款流行的开源JavaScript前端框架,旨在更好地组织与简化Web开发.Vue所关注的核心是MVC模式中的视图层,同时,它也能方便地获取数据更新,并通过组件内部特定的方法实现视图与模 ...
- 去除inline-block元素间的间距
一.现象描述 真正意义上的inline-block水平呈现的元素间,换行显示或者空格隔开的情况下会有间距,这是因为浏览器在解析时,会将换行等读取成一个空格导致. 二.移出空格的方法 ① 我们可以去掉元 ...
- 关于css兼容性问题及一些常见问题汇总
目前主流浏览器的兼容性做的都比较好了,本文主要针对IE6,7的不兼容问题进行解决. 1.圆盘时钟有浮动存在时,计算一定要精确,不要让内容的宽高超出我们所设置的宽高,IE6下,内容会撑开设置好的高度. ...
- Android app去掉https签名校验
本文同步至http://javaexception.com/archives/30 问题: 之前的一个开源项目碰到了一个问题,Fix CertPathValidatorException: Trust ...
- golang 变量定义
package main import "fmt" var luckyNum = 6 var luckyStr = "love" //myNum := 6 // ...
- Windows Server 2016-Netdom Join之客户端加域(二)
上章节我们介绍了如何通过图形化界面实现用户加域操作,本章节为大家简单介绍如何通过netdom join命令实现计算机加域操作.具体信息如下: 将工作站或成员服务器加入域.将计算机加入域的行为会为域中的 ...
- Cocos Creator—最佳构建部署实践
这篇文章主要是我们团队在使用Cocos Creator过程中的一些关于部署方面的实践总结,标题党了一回,严格来说,应该是<快看漫画游戏研发团队使用Cocos Creator构建部署最佳实践> ...
- 【STM32H7教程】第2章 STM32H7的开发环境搭建
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第2章 STM32H7的开发环境搭建 本章主要为大 ...
- C#Npoi
https://download.csdn.net/download/youhmcq/7725559http://www.cnblogs.com/downmoon/archive/2012/04/11 ...