cainiao 发表于 2009-2-10 22:44:27

如何获取本地网络的连接速度!如100M 1000M

如何获取本地网络的连接速度!如100M 1000M
如何获取本地网络的连接速度!如100M 1000M ,哪位大虾帮帮忙啊``

pusofalse 发表于 2009-2-11 02:32:52

$tagRasConn = "dword dwSize;hWnd hRasConn;char szEntryName;" & _
                "char szDeviceType;char szDeviceName;" & _
                "char szPhoneBook;dword dwSubEntry;int GuidEntry;" & _
                "dword dwFlags;int Luid;int GuidCorrelationId"

$tRasConn = DllStructCreate($tagRasConn)
DllStructSetData($tRasConn, "dwSize", DllStructGetSize($tRasConn))
$ptRasConn = DllStructGetPtr($tRasConn)

$lpCb = DllStructCreate("byte")
DllStructSetData($lpCb, 1, DllStructGetSize($tRasConn))

$pRes = DllStructCreate("ulong")

$res = DllCall("RasAPI32.Dll", "dword", "RasEnumConnections", _
                "ptr", $ptRasConn, _
                "dword*", DllStructGetPtr($lpCb), _
                "dword*", DllStructGetPtr($pRes))

$hRasConn = DllStructGetData($tRasConn, "hRasConn")

$tagRasStats = "dword dwSize;dword dwBytesXmited;dword dwBytesRcved;" & _
        "dword dwFramesXmited;dword dwFramesRcved;dword dwCrcErr;" & _
        "dword dwTimeoutErr;dword dwAlignmentErr;dword dwHardwareOverRunErr;" & _
        "dword dwFramingErr;dword dwBufferOverRunErr;dword dwCompressionRatioIn;" & _
        "dword dwCompressionRatioOut;dword dwBps;dword dwConnectDuration"

$tRasStats = DllStructCreate($tagRasStats)
DllStructSetData($tRasStats, "dwSize", DllStructGetSize($tRasStats))
$ptRasStats = DllStructGetPtr($tRasStats)

$GetStatistics = DllCall("RasAPI32.Dll", "dword", "RasGetConnectionStatistics", _
                "hWnd", $hRasConn, "ptr", $ptRasStats)
msgBox(0, DllStructGetData($tRasConn, "szEntryName"), "Speed:" & DllStructGetData($tRasStats, "dwBps") / 1000000)

gzmickey 发表于 2009-2-11 09:55:59

Speed 0:face (1):

cainiao 发表于 2009-2-16 15:54:44

试了不行,在线等有高人知道吗,谢谢

itljl 发表于 2009-6-7 14:13:21

2# pusofalse


该代码,可以获取是ADSL拨号上网的速率.
但局域网共享上网的就无法获取,能修正一下吗?

pusofalse 发表于 2009-6-7 18:56:51

Re itljl:
看下ceoguang兄的这个帖子能否满足你的需要。
http://www.autoitx.com/forum.php?mod=viewthread&tid=6236&extra=page%3D2

kn007 发表于 2009-6-7 19:10:58

留个名,学习下2楼代码

itljl 发表于 2009-6-7 22:00:11

6# pusofalse


你好,这个不行的,这个是获取的网卡的速率,比如KM网卡就是1000Mbps,如果因为其它原因变为100了,这个代码检测出来,还是100的。

itljl 发表于 2009-6-7 22:01:14

也就是说,他获取的是网卡可以达到的速率,而不是当前实际的速率。(比如网线没接好,或者在驱动设置项中将网卡设置为100Mbps的情况,这个代码检测出来,还是1000mbps)

My2009 发表于 2009-7-13 08:33:20

:face (30):SPEED 0?

dfasd 发表于 2009-7-19 14:44:29

我也想要1个这样的程序

805333 发表于 2009-12-11 04:41:04

我也需要啊,呵呵,这样的工具想了多久了,就是没有找到哟

yuxw 发表于 2009-12-11 16:40:23

Func _NetworkAdapterInfo()
;======================================================
;
; 函数名称:      _NetworkAdapterInfo()
; 详细信息:      获取系统所有网卡信息
; 返回值说明:
; 以二维数组方式返回.例如 $info=_NetworkAdapterInfo()
; $info 网卡数量
; $info 第一块网卡的标志1
; $info 第一块网卡的状态
; 状态说明:7为网卡未插网线,2为网卡连接正常
; $info 第一块网卡的网卡名称
; $info 第一块网卡的连接名称
; $info 第一块网卡的MAC地址
; $info 第一块网卡的IP地址
; $info 第一块网卡的默认网关
; $info 第一块网卡的子网掩码
; $info 第一块网卡的主DNS
; $info 第一块网卡的次DNS
; 第二块网卡:
; $info 第二块网卡的标志1
; $info 第二块网卡的次DNS

; 其他网卡信息依次类推。。。
; 注意,此UDF不会获取已经禁用的网卡。
; 作者:      Sanhen (gxbeiliu@163.com)
; 网站: www.lunhui.net.cnwww.autoitx.com
;======================================================
      Local $colItem
      Local $objItem
      Local $colItems
      Local $objItems
      Local $objWMIService
      Local $Adapters
      $Adapters = 0
      $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
      ;$colItem= $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE physicaladapter =true", "WQL", 0x30)
               $colItem= $objWMIService.ExecQuery("Select * FROM Win32_NetworkAdapter Where NetConnectionStatus >0", "WQL", 0x30)
      If IsObj($colItem) Then
                For $objItem In $colItem
                        If $objItem.MACAddress = "00:00:00:00:00:00" Then ContinueLoop
                        $Adapters += 1
                        ReDim $Adapters
                        $Adapters[$Adapters] += $Adapters
                        $Adapters[$Adapters] = $objItem.NetConnectionStatus
                        $Adapters[$Adapters] = $objItem.Description
                        $Adapters[$Adapters] = $objItem.NetConnectionID
                        $Adapters[$Adapters] = $objItem.MACAddress
                        $colItems= $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress = "'&$Adapters[$Adapters]&'" And IPEnabled = True ' , "WQL", 0x30)
                        If IsObj($colItems) Then
                              For $objItems In $colItems
                                        ;if $objItem1.IPAddress(0) = "0.0.0.0" Then ContinueLoop
                                        $Adapters[$Adapters] = $objItems.IPAddress(0)
                                        $Adapters[$Adapters] = $objItems.DefaultIPGateway(0)
                                        $Adapters[$Adapters] = $objItems.IPSubnet(0)
                                        $Adapters[$Adapters] = $objItems.DNSServerSearchOrder(0)
                                                                                $Adapters[$Adapters]=$objItem.speed/1000000
                                       ; $Adapters[$Adapters] = $objItems.DNSServerSearchOrder(1)
                              Next
                        EndIf
                Next
      EndIf

Return $Adapters

EndFunc


试试这个
页: [1]
查看完整版本: 如何获取本地网络的连接速度!如100M 1000M