找回密码
 加入
搜索
查看: 12681|回复: 12

[系统综合] [已解决]检查网络连接的一段代码,请大侠们帮我一下

 火.. [复制链接]
发表于 2013-10-6 11:32:33 | 显示全部楼层 |阅读模式
本帖最后由 fyq 于 2013-10-19 10:28 编辑

在论坛学习了N久,学写了一段安装软件时先检查网络连接状态的代码,但执行效率不高,请大侠们帮我修改一下。
谢谢先
基本思路是:在安装软件前,先检查网络连接,如果网络是通的,就直接安装软件;
                  如果网络不通,就出现选择提示:
                  如果把网络连接后,点击重试按钮继续安装软件;
                  如果忽略网络连接,点击取消按钮安装软件。
Do
        Local $iPing = Ping("www.baidu.com")

        If $iPing Then
                Run(@ScriptDir & "\SySoftIns.exe")
        Else
                Local $str = "你的网络没有连接!\n\n请先连接网络,再单击【重试】安装软件。\n在断网状况下安装软件,可能会造成部分软件不能安装或其他不可预知的问题!\n\n单击【重试】:将重新连接网络安装软件;\n单击【取消】:将忽略网络连接状态继续安装软件。\n\n\n请选择:"

                Switch MsgBox(270389, "警告--网络不通", StringFormat($str))
                        
                        Case 4
                                If $iPing Then
                                        Run(@ScriptDir & "\SySoftIns.exe")
                                EndIf
                                
                        Case 2
                                Run(@ScriptDir & "\SySoftIns.exe")
                EndSwitch
                
        EndIf
Until ProcessExists("SySoftIns.exe")
发表于 2013-10-7 17:41:41 | 显示全部楼层
期待高人出现.
发表于 2013-10-7 21:19:59 | 显示全部楼层
我觉得这没什么效率的吧 也循环不了多少次 能实现功能就好
Do
        If Ping("www.baidu.com") Then
                Run("notepad.exe")
                ExitLoop
        EndIf
Until MsgBox(5, "警告", "你的网络没有连接") = 2
考虑到有的时候万一网络卡了没PING通导致误报 多PING几次。
Do
        If _pingbd() Then
                Run("notepad.exe")
                ExitLoop
        EndIf
Until MsgBox(5, "警告", "你的网络没有连接") = 2

Func _pingbd()
        Local $n
        Do
                If Ping("www.baidu.com") Then Return True
                $n += 1
        Until $n > 5
        Return False
EndFunc 
 楼主| 发表于 2013-10-7 22:29:46 | 显示全部楼层
我觉得这没什么效率的吧 也循环不了多少次 能实现功能就好考虑到有的时候万一网络卡了没PING通导致误报 多P ...
zch11230 发表于 2013-10-7 21:19



    多谢了,测试一下
发表于 2013-10-9 10:53:38 | 显示全部楼层
我记得可以用下载百度的ICO或谷歌的ICO来测试网络。。
发表于 2013-10-9 18:20:49 | 显示全部楼层
回复 3# zch11230

额。。。感觉还是不要用ping吧,虽然我也感觉它很效率。但是若是局域网-网关开启防ping的时候就不起作用了(比如我上班的地方,上网一切操作没问题,但就是ping不通任何网站)
所以我一直这样检测网络:
Func CheckOnline()
        If TCPNameToIP("www.baidu.com") <> "" Then
                $sResault = 1
        Else
                $sResault = 0
        EndIf
        Return $sResault
EndFunc   ;==>CheckOnline
记得,运行时TCPStartup(),结束时TCPShutdown()
发表于 2013-10-9 21:23:44 | 显示全部楼层
谢谢分享!
 楼主| 发表于 2013-10-10 00:32:43 | 显示全部楼层
回复 6# 东风破


    多谢指教!!
发表于 2013-10-10 13:12:25 | 显示全部楼层
$state=-1
While 1
    If _IsCon()<>$state Then 
        If _IsCon()=0 Then 
            TrayTip("Internet Connection","Disconnected",2,2) 
            $state=0
        Else 
            TrayTip("Internet Connection","Connected",2,1) 
            $state=1
        EndIf 
   
    Else 
    EndIf 
WEnd 
   
Func _IsCon() 
    $IsCon=DllCall("WinInet.dll","int","InternetGetConnectedState","int_ptr",0,"int",0) 
    Return $iscon[0] 
EndFunc 
  
 楼主| 发表于 2013-10-10 23:43:22 | 显示全部楼层
虫子樱桃 发表于 2013-10-10 13:12



    受宠若惊啊,没想到惊动了虫子樱桃大师
发表于 2013-10-11 01:37:02 | 显示全部楼层
#Include <WinAPIEx.au3>
_WinAPI_IsInternetConnected( )
#Include <WinINet.au3>
_WinINet_InternetCheckConnection( [$sUrl = Default[, $iFlags = 0]] )
发表于 2013-10-12 17:20:22 | 显示全部楼层
回复 10# 虫子樱桃


    这个代码检测的到互联网状态吗? 检测的只是本地网卡状态吧?
发表于 2013-10-12 19:31:10 | 显示全部楼层
先可以ping下www.baidu.com 拿到他的返回结果,如果通,就装,如果不通弹出msgbox框,再根据用户点击的按钮,反悔ID。来判断是忽略,还是终止,还是继续。然后后面的自己写了。思路就是这样
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-12 04:53 , Processed in 0.080551 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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