找回密码
 加入
搜索
查看: 1965|回复: 4

[系统综合] 如何通过api获取网卡的线路速度?

[复制链接]
发表于 2012-3-15 13:24:04 | 显示全部楼层 |阅读模式


如图,看最近需要检测网络链路速度的工具比较多,想自己琢磨做个。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-3-15 20:43:38 | 显示全部楼层
Func _EnumIfEntries()
        Local $iResult, $tBuffer, $pBuffer, $tIfEntry, $tCount, $aResult[1][10]

        $iResult = DllCall("iphlpapi.dll", "dword", "GetIfTable", "ptr", 0, "ulong*", 0, "int", 1)
        $tBuffer = DllStructCreate("ubyte Binary[" & $iResult[2] & "]")
        $pBuffer = DllStructGetPtr($tBuffer, "Binary")
        $iResult = DllCall("iphlpapi.dll", "dword", "GetIfTable", "ptr", $pBuffer, _
                                        "ulong*", $iResult[2], "int", 1)
        $tCount = DllStructCreate("ulong NumberofEntries", $pBuffer)
        $aResult[0][0] = DllStructGetData($tCount, "NumberofEntries")
        Redim $aResult[$aResult[0][0] + 1][10]

        $pBuffer += 4
        For $i = 1 To $aResult[0][0]
                        $tIfEntry = DllStructCreate($tagMIB_IFROW, $pBuffer)
                        $pBuffer += DllStructGetSize($tIfEntry)
                        $aResult[$i][0] = DllStructGetData($tIfEntry, "Name")
                        $aResult[$i][1] = DllStructGetData($tIfEntry, "Descr")
                        $aResult[$i][2] = DllStructGetData($tIfEntry, "Index")
                        $aResult[$i][3] = DllStructGetData($tIfEntry, "Type")
                        $aResult[$i][4] = DllStructGetData($tIfEntry, "Speed")
                        $aResult[$i][5] = DllStructGetData($tIfEntry, "PhysicalAddr")
                        $aResult[$i][6] = DllStructGetData($tIfEntry, "AdminStatus")
                        $aResult[$i][7] = DllStructGetData($tIfEntry, "OperStatus")
                        $aResult[$i][8] = DllStructGetData($tIfEntry, "InOctets")
                        $aResult[$i][9] = DllStructGetData($tIfEntry, "OutOctets")
                        $tIfEntry = 0
        Next
        $tBuffer = 0
        Return SetError($iResult[0], 0, $aResult)
EndFunc        ;==>_EnumIfEntries

$aResult[$i][4] = DllStructGetData($tIfEntry, "Speed") 这个就是网卡速度,你多在论坛搜索一下,有这方面的资料!
 楼主| 发表于 2012-3-15 21:58:23 | 显示全部楼层
回复 2# penguinl


    哦?朋友,您是在哪里看到这个函数的?能否发个连接?
 楼主| 发表于 2012-3-16 00:34:11 | 显示全部楼层
搜了搜网卡、速度、线路速度、链路速度、还有几个api函数名,就找到一个P版的GetAdaptersInfo,而且GetAdaptersInfo还无法获取到当前网卡工作速率。
 楼主| 发表于 2012-3-16 00:45:21 | 显示全部楼层
通过msdn官方找了下资料,用字符串声明$tagMIB_IFROW时,只能写到获取网卡物理地址的地方,再往下返回值就各种变了,在我本机能获取到无线网卡的线路速度,但是移植到其他电脑就无法正确获取了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-20 16:26 , Processed in 0.083541 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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