不可以的,用户名,密码,检测完之后,出来entering ppp session......乱码,接着就断开连接。好像mscomm不可以使用ppp协议。

解决方案 »

  1.   

    一个例子:http://www.computerworld.com.cn/htm/app/aprog/01_2_26_3.asp
      

  2.   

    Const Internet_Autodial_Force_Unattended As Long = 2Public Declare Function InternetAutodial Lib "wininet.dll" (ByVal dwFlags As Long, ByVal dwReserved As Long) As Long
    Public Declare Function InternetAutodialHangup Lib "wininet.dll" (ByVal dwReserved As Long) As Long
    ------------------------------------
    Dim lResult As Long
    lResult = InternetAutodial(Internet_Autodial_Force_Unattended, 0&)
      

  3.   

    或:Dim X
    '"MyConnectionsName" is the name under the icon in Dial-up Networking
    X = Shell("rundll32.exe rnaui.dll,RnaDial " & "MyConnectionsName", 1)
    DoEvents
    'You can type in your password before the { below.
    SendKeys "{enter}", True
    DoEvents
    'End Sub
      

  4.   

    用mscomm是可以控制modem拨号,但是不能上网呀,vc里有rasdail,vb里没的。
      

  5.   

    化境编程界 -> 技术文章 -> VB/VB.Net  
       用VB实现自动上网提取信息(3)[ 作者: 马文骞   添加时间: 2001-8-21 9:26:00 ]
     Next
    Case "http://my.stockstar.com/scripts/mystockstar.dll?login"
    ' 当用户登录完成后,准备打开表格的第一页
    WebBrowser1.Navigate "http://finance.stockstar.com/scripts/finance.dll?" + _
    "showstkdfpm&begin=0&ret=1&index=2&concode=01"
    Page = 1
    Case Else ' 当进入数据页面(表格的第一页至最后一页)时执行以下程序
    Set Tables = WebBrowser1.Document.getElementsByTagName("Table")
    For Each Table1 In Tables
    If Left(Table1.innerText, 2) = "名次" Then ' 找到需要的Table
    ' 将表格转换成“.csv”格式
    For i = 1 To Table1.rows.length - 1
    Set Row = Table1.rows(i)
    j = 0
    For Each Cell In Row.cells
    Text1 = Text1 + Trim(Row.cells(j).innerText) + ","
    j = j + 1
    Next
    Text1 = Left(Text1, Len(Text1) - 1) + vbCrLf
    Next
    ' 数据存盘
    Open "C:\Data.csv" For Append As #1
    Print #1, Left(Text1, Len(Text1) - 2): Text1 = "": Close #1
    Exit For
    End If
    Next
    ' 准备打开下一页
    Page = Page + 1
    tmp = "http://finance.stockstar.com/scripts/finance.dll?showstkdfpm&ret=" + _
    Trim(Str(Page)) + "&index=2&concode=01"
    If Page <= 54 Then ' 判断是否浏览结束
    WebBrowser1.Navigate tmp
    Else
    ' 上网任务完成后,应在此调用自动挂断过程。
    Form1.MousePointer = 0
    MsgBox "Finished!!": End
    End If
    End Select
    End Sub   以下给出的是上述程序所存数据文件的片段:1,乐凯胶片,600135,材料,81.493,18.445,23.165,8.850,20.717,10.315
    2,歌华有线,600037,传播娱乐,80.553,13.009,22.256,12.141,20.304,12.844
    3,外运发展,600270,仓储运输,80.326,17.331,23.005,8.829,19.900,11.261
    4,东方钽业,0962,有色金属,80.312,15.160,22.483,11.648,21.290,9.730
    5,双汇发展,0895,食品,79.772,15.428,20.673,11.508,20.235,11.930
    6,四川美丰,0731,化肥,79.361,15.795,23.235,11.323,16.921,12.088
    ... ... ...
    1059,轮胎橡胶,600623,车类,7.167,8.265,10.973,-34.411,14.120,8.219
    1060,PT吉轻工,0546,日用轻工产品,-11.895,5.740,-49.149,7.999,14.136,9.379
    1061,广船国际,600685,机械仪器,-57.452,9.824,-1.528,-89.648,14.366,9.533 第三部分  自动拨号、自动挂断以及自动处理中途掉线
       一个出色的“自动上网机器人”程序应能按照既定的时间准时开始拨号、并当所需任务已完成后立即挂断。而且仅做到这些还不够,它还应在发出拨号指令后跟踪拨号操作是否真的成功、上网速度如何、是否需要挂断后重新拨号、自动浏览过程中是否出现掉线、以及最终的挂断操作是否真的成功完成,等等。   因此,“机器人”程序应定时检查在线状况,以保证浏览时一定在在线状态、浏览完毕后一定不在在线状态。同时还要检查浏览进度,当浏览速度过慢时尝试挂断后重新拨号。   本部分讨论了实现“自动拨号”、“检查在线状况”、以及“自动挂断”这三个功能的若干方法,比较了诸方法各自的优劣,并总结给出了使用建议。本部分的示例程序将这三个功能的诸方法集成在一起,以便于大家对比使用(见下图)。1. 自动拨号
       方法1A:使用rnaui.dll   rnaui.dll是微软的“拨号网络用户接口”程序集,一般在“\Windows\System”目录下。其中的RnaDial程序用于启动拨号。该程序可在命令行执行(在“开始”->“运行”中键入):   rundll32.exe rnaui.dll,RnaDial <拨号网络连接名>   其中的“RnaDial”和“<拨号网络连接名>”是区分大小写的。   但由于上述命令仅启动拨号窗口而未立即开始拨号,因此在程序中使用时还应再送出模拟“回车”的按键:ret = Shell("rundll32.exe rnaui.dll,RnaDial " + 连接名, 1)
       SendKeys "{enter}", True 
      

  6.   

    方法1B:使用wininet.dll   wininet.dll是微软的Internet扩充函数集,一般在“\Windows\System”目录下。其中的InternetAutodial、InternetAutodialHangup和InternetGetConnectedState三个函数分别可完成自动拨号、自动挂断和判断在线状态等任务。InternetAutodial的定义为:Private Declare Function InternetAutodial Lib "wininet.dll" _
              (ByValdwFlags As Long, ByValdwReserved As Long) As Long        若将第一个参数(dwFlags)的值设为2,该函数无需用户干预就可自动拨号。但使用该函数有一个前提:即必须将“Internet 属性”->“连接”设成“始终拨打默认连接”(见下图)。用InternetAutodial函数自动拨号的情况可参见下图。从图中可以看出,该方法可自动重试多次。具体的重试次数在默认连接的“设置”->“高级”中定义:
      

  7.   

    http://www.5xsoft.com/data/200108/2109205401_2.htm
      

  8.   

    Public hRasConn As Long '定义一个指向RAS调用的全局句柄
    Public Const RAS95_MaxPhoneNumber = 128
    Public Const RAS95_MaxEntryName = 256
    Public Const RAS95_MaxCallbackNumber = RAS95_MaxPhoneNumber
    Public Const RAS95_MaxDeviceType = 16
    Public Const RAS95_MaxDeviceName = 128
    Public Const RAS95_RasConnSize = 412
    Public Type RASDIALPARAMS
        dwSize As Long
        szEntryName(RAS95_MaxEntryName) As Byte
        szPhoneNumber(RAS95_MaxPhoneNumber) As Byte
        szCallbackNumber(RAS95_MaxCallbackNumber) As Byte
        szUserName(UNLEN) As Byte
        szPassword(PWLEN) As Byte
        szDomain(DNLEN) As Byte
    End TypePublic Type RasConn
        dwSize As Long
        hRasConn As Long
        szEntryName(RAS95_MaxEntryName) As Byte
        szDeviceType(RAS95_MaxDeviceType) As Byte
        szDeviceName(RAS95_MaxDeviceName) As Byte
    End TypePublic Type RASCONNSTATUS
        dwSize As Long
        RasConnState As Long
        dwError As Long
        szDeviceType(RAS95_MaxDeviceType) As Byte
        szDeviceName(RAS95_MaxDeviceName) As Byte
    End TypePublic Type RASENTRYNAME95
        'set dwsize to 264
        dwSize As Long
        szEntryName(RAS95_MaxEntryName) As Byte
    End Type
    Public Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (lpString1 As Any, ByVal lpString2 As String) As Long
    Public Declare Function RasDial Lib "rasapi32.dll" Alias "RasDialA" (lprasdialextensions As Any, ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal dwNotifierType As Long, lpvNotifier As Long, lphrasconn As Long) As Long
    Public Declare Function RasHangUp Lib "rasapi32.dll" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
    Public Declare Function RasEnumEntries Lib "rasapi32.dll" Alias "RasEnumEntriesA" (ByVal reserved As String, ByVal lpszPhonebook As String, lprasentryname As Any, lpcb As Long, lpcEntries As Long) As Long
    Public Declare Function RasGetEntryDialParams Lib "rasapi32.dll" Alias "RasGetEntryDialParamsA" (ByVal lpcstr As String, ByRef lprasdialparamsa As RASDIALPARAMS, ByRef lpbool As Long) As Long
    Public Declare Function RasEnumConnections Lib "rasapi32.dll" Alias "RasEnumConnectionsA" (lpRasConn As Any, lpcb As Long, lpcConnections As Long) As Long
    Public Declare Function RasGetConnectStatus Lib "rasapi32.dll" Alias "RasGetConnectStatusA" (ByVal hRasCon As Long, lpStatus As Any) As LongPublic Function Dial(ByVal Connection As String, ByVal UserName As String, ByVal Password As String) As Boolean
        Dim rp As RASDIALPARAMS, h As Long, resp As Long
        rp.dwSize = Len(rp) + 6
        ChangeBytes Connection, rp.szEntryName
        ChangeBytes "", rp.szPhoneNumber
        ChangeBytes "*", rp.szCallbackNumber
        ChangeBytes UserName, rp.szUserName
        ChangeBytes Password, rp.szPassword
        ChangeBytes "*", rp.szDomain
    End FunctionPublic Function ChangeBytes(ByVal str As String, Bytes() As Byte) As Boolean
        'Changes a Visual Basic unicode string to an byte array
        'Returns True if it truncates str
        Dim lenBs As Long 'length of the byte array
        Dim lenStr As Long 'length of the string
        lenBs = UBound(Bytes) - LBound(Bytes)
        lenStr = LenB(StrConv(str, vbFromUnicode))
        If lenBs > lenStr Then
            CopyMemory Bytes(0), str, lenStr
            ZeroMemory Bytes(lenStr), lenBs - lenStr
        ElseIf lenBs = lenStr Then
            CopyMemory Bytes(0), str, lenStr
        Else
            CopyMemory Bytes(0), str, lenBs 'Queda truncado
            ChangeBytes = True
        End If
    End Function