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支持: ...
随机推荐
- Linux遗忘root密码的其中两种解决方法
由于安全的需要,系统一般只有一个root用户,因此若遗忘root用户的登录密码,因此需要通过其他途径进行修改密码.1.通过单用户模式(1)重启系统,按任意键进入grub菜单.出现grub菜单时,按↑, ...
- 关于json对象的深拷贝
前两天写程序,有一个是对后台返回的json数据进行整理然后再使用,用到了关于json 的拷贝.我在我的一篇博客中提到过对数组的拷贝.分为深度拷贝,和浅拷贝.这里附上链接 其实对于数组的拷贝是比较简单的 ...
- CSS引入本地字体与在线字体
有些时候为了强调某些文字,需要使用一些比较特别的字体,CSS中现在也可以比较方便的引入字体了,如下: /* 定义字体 */ @font-face{ font-family: Arista2; src: ...
- 【原】无脑操作:Windows下搭建Kafka运行环境
Kafka是一种高吞吐量的分布式发布订阅消息系统 1.优点:① 通过磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能.② 高吞吐量:即使是非常普通的硬件Kaf ...
- Core文件简单介绍及生成设置方法
Core文件简单介绍及生成设置方法 Core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试.当程序崩溃时便会产生core文件,其实准确的应该说是core dump 文 ...
- AMBARI Blueprint 使用文档
Introduction Notable JIRAs API Resources and Syntax Blueprint Usage Overview Step 0: Prepare Ambari ...
- 【工具篇】Sublime Text 2 安装汉化破解、插件包安装教程详解
Sublime Text概述: Sublime Text是一个代码编辑器,也是HTML和散文先进的文本编辑器. 漂亮的用户界面和非凡的功能,例如:迷你地图,多选择,Python插件,代码段等等. 完全 ...
- 不为人知的网络编程(八):从数据传输层深度解密HTTP
1.引言 在文章<理论联系实际:Wireshark抓包分析TCP 3次握手.4次挥手过程>中,我们学会了用wireshark来分析TCP的“三次握手,四次挥手”,非常好用.这就是传说中的锤 ...
- 如何将Azure DevOps中的代码发布到Azure App Service中
标题:如何将Azure DevOps中的代码发布到Azure App Service中 作者:Lamond Lu 背景 最近做了几个项目一直在用Azure DevOps和Azure App Servi ...
- Koa 中的错误处理
不像 express 中在末尾处注册一个声明为 (err, req, res, next) 中间件的方式,koa 刚好相反,在开头进行注册. app.use(async (ctx, next) =&g ...