我的系统是WIN2K PRO,建立了一个VPN连接,连到公司.这样,我就可以在公司里面控制家里的机器了.
但是家里的网状态不是太好,有时候会断.我想写个程序,如果,断了的话,就自动重新拨号,连上VPN.也就是说用VB写个程序,去控制这个已存在的VPN连接.请问,怎么做?但是程序不知道怎么写.
大家有想法么?UP有分!

解决方案 »

  1.   

    我的思路:1、监测网络状态是否连通(Internet)。2、监测VPN状态是否连通。3、调用拨号程序(可能是虚拟拨号)。4、调用VPN拨号程序。以上思路仅供参考。
      

  2.   

    先拨号连到ISP ,然后连接VPN服务器
      

  3.   

    言归正传:下载一个专业的VPN拔号软件,网上很多,在里面设置它的
    自动拔号属性就可以了
      

  4.   

    2000里的VPN设置里也有的啊。新建VPN网络连接的时候选择“自动拨此初始连接”就OK了。
      

  5.   

    谢谢!我是希望用程序来控制这个连接.
    至于连接到INTERNET的拨号连接就不用程序管了。因为我是用路由上网.一开机就已经挂在网上了。谢谢大家的参与!
    一定给分!
      

  6.   

    每过一段时间就用内网地址PING一下服务器,比如单位内部的MAIL SERVER什么的。如果不通,则重拨。
    可以用SHELL来调用 PING +参数 >> xxx.TXT ,分析文本数据知道是否连通。
    因为VPN连接后就等同于一个局域网。
      

  7.   

    To:  WallesCai(第一周上班,没有双休,只有工作) 
    判断不通后,怎么重拨呢?我就是这个不清楚.
      

  8.   

    到网上搜索RAS机制的文章,一搜一大堆
      

  9.   

    其实存在了VPN实际上就相当于是一个直接的局域拨号而已
    定时判定链路断开
    关键在于你与VPN的连接方式,使用虚拟拨号适配器进行连接??
      

  10.   

    是用RAS的API ,用rasdail vpn usename password命令即可。vpn为连接名,下面代码。控件自己添加Option Explicit
    Private Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" _
    (ByVal hRasConn As Long) As Long
    Private Declare Function RasEnumConnections _
    Lib "RasApi32.DLL" Alias "RasEnumConnectionsA" _
    (lprasconn As Any, lpcb As Long, lpcConnections As Long) As Long
     
    Const RAS_RASCONNSIZE As Integer = 412
    Const RAS95_MaxEntryName = 256
    Const RAS95_MaxDeviceName = 128
    Const RAS_MaxDeviceType = 16Private Type RASCONN95
       'set dwsize to 412
       dwSize As Long
       hRasConn As Long
       szEntryName(RAS95_MaxEntryName) As Byte
       szDeviceType(RAS_MaxDeviceType) As Byte
       szDeviceName(RAS95_MaxDeviceName) As Byte
    End TypePrivate Sub Command1_Click()
        Dim X
        X = Shell("rasdial gubins administrator gubin823119", 1)
    End SubPrivate Sub Command2_Click()
        Dim X
        X = Shell("rasdial /disconnect", 0)
    End SubPrivate Sub Command3_Click()
      Dim res
      res = Shell("rasphone.exe -d gubins", 1)
    End SubPrivate Sub Command4_Click()
      Dim res
      res = Shell("rasphone.exe -h gubins", 0)
    End SubPrivate Sub Command5_Click()
       Dim lngRetCode As Long
       Dim lpcb As Long
       Dim lpcConnections As Long
       Dim intArraySize As Integer
       Dim intLooper As Integer
      
       ReDim lprasconn95(intArraySize) As RASCONN95
       lprasconn95(0).dwSize = 412
       lpcb = 256 * lprasconn95(0).dwSize
       lngRetCode = RasEnumConnections(lprasconn95(0), lpcb, lpcConnections)
      
       If lngRetCode = 0 Then
           If lpcConnections > 0 Then
               For intLooper = 0 To lpcConnections - 1
                   RasHangUp lprasconn95(intLooper).hRasConn
               Next intLooper
           Else
               MsgBox "没有拨号网络连接!", vbInformation
           End If
       End If
    End SubPrivate Sub Command6_Click()
        Dim X
        X = Shell("rundll32.exe rnaui.dll,RnaDial gubins", 1)
    '    DoEvents
    '    SendKeys "823119", True
    '    DoEvents
    '    SendKeys "{enter}", True
    '    DoEvents
    End Sub
      

  11.   

    谢谢jlum99(闲人).
    能说一下你的这几个BUTTON分别是做什么用的么?
      

  12.   

    就是一些断开连接的代码,使用不同的方法。1,2是用rasdail 这个是WINDOWS目录现有的的工具,支持命令行的,使用SHELL调用。3,4是用rasphone目的也是一样的,具体参数的意思你可以用cmd ->rasphone /? 5,是一个使用API函数判断网络是否连通,使用RasHangUp 断开的。6就是使用rundll32.exe 运行rnaui.dll来建立一个网络连接。