本帖最后由 sensel 于 2009-5-29 19:42 编辑
好吧,我们继续。。。
Local Const $sGWAddr = "192.168.0.1"
Local $iIndex
$iIndex = _GetBestInterface($sGWAddr)
If $iIndex <> 0 Then _FlushIpNetTable($iIndex)
Exit
;===============================================================================
; 说明: 获取到指定IP地址的最佳路由接口索引号
; 语法: _GetBestInterface($sAddr)
; 参数: $sAddr - IP地址
; 需要: 无
; 返回: 成功 - 接口索引号
; 失败 - 0, 并设置 @error 到 API操作返回值
; 备注: 无
;===============================================================================
Func _GetBestInterface($sAddr)
Local $aResult, $iAddr, $iIndex, $tBestIfIndex, $pBestIfIndex
$iAddr = _inet_addr($sAddr)
$tBestIfIndex = DllStructCreate("dword")
$pBestIfIndex = DllStructGetPtr($tBestIfIndex)
$aResult = DllCall("iphlpapi.dll", "long", "GetBestInterface", "dword", $iAddr, "ptr", $pBestIfIndex)
If $aResult[0] <> 0 Then Return SetError($aResult[0], 0, 0)
Return DllStructGetData($tBestIfIndex, 1)
EndFunc ;==>_GetBestInterface
;===============================================================================
; 说明: 清空指定网络适配器ARP表项目
; 语法: _FlushIpNetTable($iAdptIndex)
; 参数: $iAdptIndex - 网络适配器索引号
; 需要: 无
; 返回: 成功 - 1
; 失败 - 0, 并设置 @error 到 API操作返回值
; 备注: 出处: http://www.autoitx.com/forum.php?mod=viewthread&tid=7308 3#, 作者: pusofalse
;===============================================================================
Func _FlushIpNetTable($iAdptIndex)
Local $aResult
$aResult = DllCall("iphlpapi.dll", "long", "FlushIpNetTable", "long", $iAdptIndex)
Return SetError($aResult[0], 0, $aResult[0] = 0)
EndFunc ;==>_FlushIpNetTable
Func _inet_addr($sAddr)
Local $iAddr = DllCall("ws2_32.dll", "long", "inet_addr", "str", $sAddr)
Return $iAddr[0]
EndFunc ;==>_inet_addr
|