找回密码
 加入
搜索
楼主: freedom

[系统综合] 求助,关于判断联网方式

 火.. [复制链接]
发表于 2011-7-7 16:31:13 | 显示全部楼层
$INTERNET_CONNECTION_MODEM          = 0x1
$INTERNET_CONNECTION_LAN            = 0x2
$INTERNET_CONNECTION_PROXY          = 0x4
$INTERNET_CONNECTION_MODEM_BUSY     = 0x8
$INTERNET_RAS_INSTALLED             = 0x10
$INTERNET_CONNECTION_OFFLINE        = 0x20
$INTERNET_CONNECTION_CONFIGURED     = 0x40

    $ret = DllCall("WinInet.dll","int","InternetGetConnectedState","int_ptr",0,"int",0)

    If $ret[0] then
        $sX = "Internet connection found!"
        If BitAND($ret[1], $INTERNET_CONNECTION_MODEM)      Then $sX = $sX & "MODEM" & @LF
        If BitAND($ret[1], $INTERNET_CONNECTION_LAN)        Then $sX = $sX & "LAN" & @LF
        If BitAND($ret[1], $INTERNET_CONNECTION_PROXY)      Then $sX = $sX & "PROXY" & @LF
        If BitAND($ret[1], $INTERNET_CONNECTION_MODEM_BUSY) Then $sX = $sX & "MODEM_BUSY" & @LF
        If BitAND($ret[1], $INTERNET_RAS_INSTALLED)         Then $sX = $sX & "RAS_INSTALLED" & @LF
        If BitAND($ret[1], $INTERNET_CONNECTION_OFFLINE)    Then $sX = $sX & "OFFLINE" & @LF
        If BitAND($ret[1], $INTERNET_CONNECTION_CONFIGURED) Then $sX = $sX & "CONFIGURED" & @LF
                
        MsgBox(0, "Result:", $sX)
    Else
        MsgBox(0, "Result:", "Not Connected")
        Sleep(2000)
        Exit
    Endif
发表于 2011-7-7 16:44:41 | 显示全部楼层
看看。。。。
发表于 2011-7-7 17:18:04 | 显示全部楼层
本帖最后由 曼菲士 于 2011-7-7 17:25 编辑
3mile 发表于 2011-7-7 16:31



我的是联通4M专线,通过路由器出去,应属NAT方式,测试结果 $ret[0] =1,$ret[1] =0,结果显示

本帖子中包含更多资源

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

×
发表于 2011-7-7 19:13:29 | 显示全部楼层
回复 18# 曼菲士
$INTERNET_CONNECTION_MODEM = 0x1
$INTERNET_CONNECTION_LAN = 0x2
$INTERNET_CONNECTION_PROXY = 0x4
$INTERNET_CONNECTION_MODEM_BUSY = 0x8
$INTERNET_RAS_INSTALLED = 0x10
$INTERNET_CONNECTION_OFFLINE = 0x20
$INTERNET_CONNECTION_CONFIGURED = 0x40

$ret = DllCall("WinInet.dll", "int", "InternetGetConnectedState", "int_ptr", 0, "int", 0)

If $ret[0] Then
        $sX = "Internet connection found!"
        If BitAND($ret[1], $INTERNET_CONNECTION_MODEM) Then $sX = $sX & "MODEM" & @LF
        If BitAND($ret[1], $INTERNET_CONNECTION_LAN) Then $sX = $sX & "LAN" & @LF
        If BitAND($ret[1], $INTERNET_CONNECTION_PROXY) Then $sX = $sX & "PROXY" & @LF
        If BitAND($ret[1], $INTERNET_CONNECTION_MODEM_BUSY) Then $sX = $sX & "MODEM_BUSY" & @LF
        If BitAND($ret[1], $INTERNET_RAS_INSTALLED) Then $sX = $sX & "RAS_INSTALLED" & @LF
        If BitAND($ret[1], $INTERNET_CONNECTION_OFFLINE) Then $sX = $sX & "OFFLINE" & @LF
        If BitAND($ret[1], $INTERNET_CONNECTION_CONFIGURED) Then $sX = $sX & "CONFIGURED" & @LF
        If $ret[1] = 0 Then $sX = _GetNetworkConnect() & @LF
        MsgBox(0, "Result:", $sX)
Else
        MsgBox(0, "Result:", "Not Connected")
        Sleep(2000)
        Exit
EndIf

Func _GetNetworkConnect()
    Local Const $NETWORK_ALIVE_LAN = 0x1 
    Local Const $NETWORK_ALIVE_WAN = 0x2
    Local Const $NETWORK_ALIVE_AOL = 0x4 
    
    Local $aRet, $iResult    
    $aRet = DllCall("sensapi.dll", "int", "IsNetworkAlive", "int*", 0)    
    If BitAND($aRet[1], $NETWORK_ALIVE_LAN) Then $iResult &= "LAN connected" & @LF
    If BitAND($aRet[1], $NETWORK_ALIVE_WAN) Then $iResult &= "WAN connected" & @LF
    If BitAND($aRet[1], $NETWORK_ALIVE_AOL) Then $iResult &= "AOL connected" & @LF    
    Return $iResult
EndFunc
 楼主| 发表于 2011-7-7 20:19:57 | 显示全部楼层
本帖最后由 freedom 于 2011-7-7 20:21 编辑

回去测试一下! LAN  WAN  AOL connected   能不能解释一下?

lan 局域网连接?
wan 城域网连接?
AOL  ?
 楼主| 发表于 2011-7-8 03:00:37 | 显示全部楼层
回复 19# 3mile

这个脚本好像有点问题,只要我把本地连接设个IP,ADSL拨号的时候就会出现。


而且有VPN连接的时候,一样会提示WAN连接方式。

本帖子中包含更多资源

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

×
 楼主| 发表于 2011-7-8 05:50:50 | 显示全部楼层
本帖最后由 freedom 于 2011-7-8 06:05 编辑

这个是跟据  3mile   大侠的脚本修改的。

    
$ret = DllCall("WinInet.dll", "int", "InternetGetConnectedState", "int_ptr", 0, "int", 0)
$sX = "NAT"
If $ret[0] Then
        If $ret[1] = 0 Then _GetNetworkConnect()
        MsgBox(0, "提示:", "您的上网方式为:"&$sX)
Else
        MsgBox(0, "提示:", "您的机器没有网络连接!")
        Sleep(2000)
        Exit
EndIf
 
Func _GetNetworkConnect()
    Local Const $NETWORK_ALIVE_LAN = 0x1 
    Local Const $NETWORK_ALIVE_WAN = 0x2
    Local Const $NETWORK_ALIVE_AOL = 0x4 
    Local $aRet, $iResult    
    $aRet = DllCall("sensapi.dll", "int", "IsNetworkAlive", "int*", 0)    
    $sX   = "NAT"
        $lan  = BitAND($aRet[1], $NETWORK_ALIVE_LAN)
    $adsl = BitAND($aRet[1], $NETWORK_ALIVE_WAN)
    If $adsl > $lan Then $SX="ADSL"
EndFunc 
 楼主| 发表于 2011-7-8 05:58:02 | 显示全部楼层
有没有朋友帮忙测试一下,看看准确不?
发表于 2011-7-8 08:45:47 | 显示全部楼层
回复 23# freedom
查了查wiki, 有个疑问, nat是联网方式吗
发表于 2011-7-8 09:00:25 | 显示全部楼层
继续猜测
获取本机网关,tracert www.baidu.com 获取第一个节点的ip,如果与网关相同,则nat,否则adsl或wan
发表于 2011-7-8 14:27:26 | 显示全部楼层
留个脚印~~~~~~~~
 楼主| 发表于 2011-7-8 15:59:24 | 显示全部楼层
本帖最后由 freedom 于 2011-7-8 18:52 编辑

回复 24# netegg


对啊,一般通过路由器上网的应该都是nat方式上网。
 楼主| 发表于 2011-7-8 18:51:40 | 显示全部楼层
本帖最后由 freedom 于 2011-7-8 18:53 编辑

回复 25# pcbar


超版,给段代码?? 如果是ADSL上网,本地连接没有设IP。tracert 返回值对比网关怎么对比?
发表于 2011-7-9 08:58:24 | 显示全部楼层
回复  pcbar


超版,给段代码?? 如果是ADSL上网,本地连接没有设IP。tracert 返回值对比网关怎么对比 ...
freedom 发表于 2011-7-8 18:51
TrayTip("正在跟踪路由...", "检测数据包经过的第一个节点,根据您的网络情况耗时不等,请稍候。。。", 10)
RunWait(@ComSpec & " /c " & "tracert www.baidu.com /h 1 >c:\bar.txt",@TempDir,@SW_HIDE)
$txt = FileRead("c:\bar.txt")
$ip = StringRegExp($txt, "(((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?))", 3)
If IsArray($ip) Then
        If sy($ip[4]) Then
        TrayTip("检测完成", "数据包经过的第一个路由节点是:"&$ip[4]&";私有ip,您处于内网", 10)
        MsgBox(64,"完成","NAT方式上网")
Else
        TrayTip("检测完成", "数据包经过的第一个路由节点是:"&$ip[4]&";公有ip,您处于外网", 10)
        MsgBox(64,"完成","非NAT方式上网")
EndIf
Else
        MsgBox(16,"出错","未连网或其它未知错误!!")
EndIf
FileDelete("c:\bar.txt")

Func sy($_ip);;判断$_ip是否为私有地址
        Local $t[18]
        $t[0] = "10"
        $t[1] = "192.168"
        For $i = 2 To 17
                $t[$i] = "172." & ($i + 14)
        Next
        For $j = 0 To 17
                If StringInStr($_ip, $t[$j]) = 1 Then Return True
        Next
        Return False
EndFunc   ;==>sy
试试看
发表于 2011-7-9 20:04:43 | 显示全部楼层
顶帖,期待。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-18 13:43 , Processed in 0.074097 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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