Shell “rundll rnaui.dll,RnaDial 163”,vbNormalFocus 

解决方案 »

  1.   

    介绍怎样VB编程建立拨号连接的文章:
    http://vb.oreilly.com/news/dialup_0600.html
    很长,使用了大量的API,自己慢慢看吧。
      

  2.   

    利用 API 可以直接拨号。声明:Private Declare Function tapiRequestMakeCall Lib "TAPI32.DLL" (ByVal DestAddr$, ByVal AppName As String, ByVal CalledParty As String, ByVal Comment As String) As Long
    例子:
    Public Sub CallPhone(Number As String, Name As String)
    Dim lRes As Long
    If (Trim(Number) = "") Then
    Exit Sub
    End If
    If (MsgBox("About to call " & Trim(Name) & " at phone number " & Trim(Number) & vbCrLf & "Do it?", vbYesNo, App.Title) = vbYes) Then
    lRes = tapiRequestMakeCall(Trim(Number), App.Title, Trim(Name), "")
    Debug.Print Now; " CallPhone -> tapiRequestMakeCall Result code = "; lRes
    End If
    End Sub还有一种方法是:
    PhoneNumber$ = "(123)456-7890" 
    Open "COM2:" For Output As #1 'or COM1 
    Print #1, "ATDT" & PhoneNumber$ & Chr$(13) 
    Close #1
    当然,该方法只适合小型的应用。
      

  3.   

    : Jneu(沧海桑田) 利用shell调控制面板是最简单的
    要不就用api
      

  4.   

    我记得原来有一个专业站点,专门介绍Ras Tapi方面的内容,里面有这方面的内容,我回家
    找一下,如果能找到再告诉你。
    btw 上面我提供的文章我是在 www.google.com 上以 Ras Dial-up +VB 做关键字找到的。
    你也可以自己找一下。
      

  5.   

    我知道,要用API 的RAZ
    下面是部分定义代码,完整调用你需要再给你,省得有人说给你代码是害你
    '-------------------------------------------------------------------
    Option ExplicitPublic hRasConn As Long '定义一个指向RAS调用的全局句柄
    Public Const APINULL = 0&
    Public Const UNLEN = 256
    Public Const DNLEN = 15
    Public Const PWLEN = 256
    Public Const RAS95_MaxPhoneNumber = 128
    Public Const RAS95_MaxEntryName = 256
    Public Const RAS95_MaxCallbackNumber = RAS95_MaxPhoneNumber
    Public Type RASDIALPARAMS95
        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 Type
    '**********************************
    '* RAS调用错误代号 *
    '**********************************
    Public Const NOT_SUPPORTED = 120&
    Public Const RASBASEERROR = 600&
    Public Const SUCCESS = 0&
    Public Const ERROR_PORT_ALREADY_OPEN = (RASBASEERROR + 2)
    Public Const ERROR_UNKNOWN = (RASBASEERROR + 35)
    Public Const ERROR_REQUEST_TIMEOUT = (RASBASEERROR + 38)
    Public Const ERROR_PASSWD_EXPIRED = (RASBASEERROR + 48)
    Public Const ERROR_NO_DIALIN_PERMISSION = (RASBASEERROR + 49)
    Public Const ERROR_SERVER_NOT_RESPONDING = (RASBASEERROR + 50)
    Public Const ERROR_UNRECOGNIZED_RESPONSE = (RASBASEERROR + 52)
    Public Const ERROR_NO_RESPONSES = (RASBASEERROR + 60)
    Public Const ERROR_DEVICE_NOT_READY = (RASBASEERROR + 66)
    Public Const ERROR_LINE_BUSY = (RASBASEERROR + 76)
    Public Const ERROR_NO_ANSWER = (RASBASEERROR + 78)
    Public Const ERROR_NO_CARRIER = (RASBASEERROR + 79)
    Public Const ERROR_NO_DIALTONE = (RASBASEERROR + 80)
    Public Const ERROR_AUTHENTICATION_FAILURE = (RASBASEERROR + 91)
    Public Const ERROR_PPP_TIMEOUT = (RASBASEERROR + 118)
    '**********************************
    '* RAS API 声明 *
    '**********************************
    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
      

  6.   

    给你一个思路
    在98里建立一个拨号连接,然后从“拨号连接”文件夹拖到桌面,会生成一个.dun文件
    用记事本打开,看到什么?
    以下是我这里的dun文件内容:[Entry]
    Entry_Name=ISDN
    Import_Name=ISDN
    Multilink=yes[Phone]
    Dial_As_Is=yes
    Phone_Number=163[Device]
    Type=modem
    Name=ISDN Line 0
    Settings_Size=86
    Settings=42000000560000004953444E000000000000000000000000000000000000000000000000000000004200000010000000520000000400000000000000000000000000020000000000000001000000000000000000000071[Server]
    Type=PPP
    SW_Compress=yes
    PW_Encrypt=no
    Network_Logon=no
    SW_Encrypt=no
    Negotiate_NetBEUI=no
    Negotiate_IPX/SPX=no
    Negotiate_TCP/IP=yes[TCP/IP]
    Specify_IP_Address=no
    Specify_Server_Address=no
    IP_Header_Compress=yes
    Gateway_On_Remote=yes[Multilink]
    0=Line_0[Line_0]
    Type=modem
    Name=ISDN Line 1
    Phone_Number=163然后,再试一下,把原来建好的拨号连接删除,再运行DUN文件,就会建立一个新的拨号连接
    即使Modem型号不匹配,也会自动查找机器上可用的Modem
    所以,生成一个文本文件,命名为.dun 再shell一下,
    虽非正途,可能也算一条捷径
      

  7.   

    fuxc(Michael)
    你的思路好啊!!!就试试,我喜欢最简单的方法
    就看猫的问题能不能解决今天我很高兴啊,虽然胃一直在痛,但稍稍明白了rasapi的用法,我现在继续
      

  8.   

    要适合所有的应用必须用RASAPI...........
      

  9.   

    愁!!!!fuxc(Michael)思路的问题是,换一台机器就要问用户名和密码
      

  10.   

    本问题的标分已达238分,分五贴,有好意见的热心人可以进入各贴领分...
       
        http://www.csdn.net/expert/topic/495/495039.shtm
        http://www.csdn.net/expert/topic/497/497597.shtm
        http://www.csdn.net/expert/topic/490/490318.shtm
        http://www.csdn.net/expert/topic/487/487090.shtm
        http://www.csdn.net/expert/topic/497/497640.shtm