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支持: ...
随机推荐
- jQuery中对未来的元素绑定事件用 on
最近项目需要点击弹窗里面的a标签出现外连接跳转提示 <a href="javascript:void(0);" target="_blank" id=&q ...
- 土旦:关于display:flex碰上white-space nowrap 影响布局的问题
背景,做一个前面图片宽度固定,后面宽度自适应,使用到了flex布局,但是想让后面div里文字不换行,超出以点点表示时,这时布局就乱了,查了下,原来flex布局与white-space:nowrap有影 ...
- Cesium 实现粒子效果贴地(伪)
有时我们面对这样的需求,需要在地面上放一个周期性放大缩小的标记,可以使用粒子效果实现,但是粒子效果图片很难贴地(如果你知道怎么做,欢迎分享,期待有人打我脸),我只能变通实现一个看似贴地但实际没有贴地的 ...
- java中用swing做一个windows计算器
目录 主函数 普通计数器 科学计算器 注意: @(java中用swing做一个windows计算器) 前言: 来看这篇教程估计都是java课程设计吧,现在已经没有公司很少使用swing组件了,java ...
- 如何购买并配置linux服务器上的数据库
首先百度搜索阿里云 如果是学生可以学生认证 然后注册账号->个人认证->学生认证 然后你会发现 服务器一年只要114,114你买不了上当,买不了吃亏,买下面的ECS服务器,系统可以选择wi ...
- Win10下搭建Git服务器
一. 搭建Git服务器环境前的必要准备 1.Windows10 2.Java环境 3.GitBlit服务器 4.Git版本管理工具 二. 开始搭建 第一步.安装JAVA运行环境 https://www ...
- 《SQL CookBook 》笔记-第二章-查询结果排序
目录 第二章 查询结果排序 2.1 以指定顺序返回查询结果 2.2 依据子串排序 2.3 排序时对 Null 值的处理 2.4 依据条件逻辑动态调整排序项 第二章 shanzm 第二章 查询结果排序 ...
- Centos 7 django环境搭建
1.本机网卡配置信息如下: vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER ...
- Windows上搭建远程访问服务
Windows上搭建远程访问服务 转自:https://blog.51cto.com/13871378/2153308?source=dra 概述:允许客户机通过拨号连接或虚拟专用网连接到公司局域网, ...
- 周一01.2 计算机硬件&操作系统
一.计算机硬件组成 1)控制器:是计算机的指挥系统 2)运算器:数学运算&逻辑运算 3)存储器:存取数据 内存:相当于人的短期记忆(缺点:断电数据会丢失:优点:存取速度快) 外存:相当于一个本 ...