找回密码
 加入
搜索
查看: 1008|回复: 2

有一段程序的几个语句不太理解

[复制链接]
发表于 2009-8-7 01:06:31 | 显示全部楼层 |阅读模式
本帖最后由 solox 于 2009-8-7 23:54 编辑
Dim $MAC = Chr(13)
$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:\" & $strComputer & "\root\cimv2")
$colNicConfigs = $objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
If IsObj($colNicConfigs) Then
   For $objItem In $colNicConfigs
$objNic = $objWMIService.Get ("Win32_NetworkAdapter.DeviceID=" & $objItem.Index)
$MAC = $MAC & Chr(10) & $objNic.MACAddress
   Next
   $MAC = StringReplace($MAC,Chr(13)&Chr(10),"")
Else
 SetError(1)
EndIf

MsgBox(0,"MAC",$MAC)
MsgBox(0, "共替换的数量为:", @extended)
这是一个读取本机MAC地址的程序,其中有两个语句不太了解作用
1、第一句的$MAC = Chr(13),为什么要先把$MAC设定成一个回车呢?
2、$MAC = StringReplace($MAC,Chr(13)&Chr(10),""),这一句的作用何在,调试发现它根本没替换任何字符呀?
发表于 2009-8-7 09:21:39 | 显示全部楼层
我的理解是For...In...Next需求( 列举对象集合或数组中的元素),在存在多块网卡时,每块网卡的MAC用软回车分离"CHR(10)",按源代码应该是这样:
chr(13)+chr(10)+网卡1+chr(10)+网卡2+chr(10)+网卡3+chr(10)+.........+chr(10)+网卡n
而 StringReplace目的是消除这个串头部的软硬回车符。
这段代码完全可以改成这样(直接加硬回车):
Dim $MAC = ""
$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:\" & $strComputer & "\root\cimv2")
$colNicConfigs = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
If IsObj($colNicConfigs) Then
        For $objItem In $colNicConfigs
                $objNic = $objWMIService.Get("Win32_NetworkAdapter.DeviceID=" & $objItem.Index)
                $MAC = $MAC & $objNic.MACAddress&@CRLF
        Next
        $MAC = StringTrimRight($MAC,1)
Else
        SetError(1)
EndIf

MsgBox(0, "MAC", $MAC)
MsgBox(0, "共替换的数量为:", @extended)
 楼主| 发表于 2009-8-7 23:45:54 | 显示全部楼层
受教了,非常感谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-3 10:04 , Processed in 0.074256 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表