CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

如何调用已经建立的ADSL拨号连接?

楼主zhaoyu_me()2005-02-23 20:11:22 在 Delphi / Windows SDK/API 提问

我的系统是XP,已经建立了一个“ADSL”的拨号连接,请问如何才能在delphi中调用它进行拨号上网呢?我在网上找到一个这样的方法:  
  winexec('rundll32.exe   rnaui.dll,RnaDial   ADSL',SW_SHOWNORMAL);  
  不过我按这种方法编程后发现运行时提示:  
  加载rnaui.dll时出错   找不到指定的模块  
  在windows的运行中直接输入rundll32.exe   rnaui.dll,RnaDial   adsl也是同样的错误,请问我应该怎么办啊? 问题点数:20、回复次数:7Top

1 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-02-24 19:26:29 得分 0

使用rasdial.exe试试看,例有一个ADSL连接名叫'ADSL'并保存了用户名和密码,就使用:  
  rasdial   adsl  
  ===========================================================  
  rasdial   entryname   [username   [password|*]]   [/DOMAIN:domain]  
                  [/PHONE:phonenumber]   [/CALLBACK:callbacknumber]  
                  [/PHONEBOOK:phonebookfile]   [/PREFIXSUFFIX]  
   
  rasdial   [entryname]   /DISCONNECT  
   
  Top

2 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-02-24 21:24:47 得分 0

可惜找不到ADSLDPC.DLL的相关文档。Top

3 楼zhaoyu_me()回复于 2005-02-27 13:04:25 得分 0

在CMD中输入:rasdial   adsl后出现(ADSL保存了密码):  
  ==============================  
  正在连接到   ADSL...  
  正在验证用户名及密码...  
   
  远程访问错误   691   由于域上的用户名和/或密码无效而拒绝访问。  
   
  若需此错误的详细说明:  
                请在帮助中键入“hh   netcfg.chm”  
                单击“疑难解答”,选择“错误信息”,然后键入   “   691”Top

4 楼pilicat(Delphi迷)回复于 2005-02-27 14:30:46 得分 20

即使你保存了密码,也需要这样调用的:  
   
  rasdial   adsl   用户名   密码Top

5 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-03-04 22:24:24 得分 0

unit   Ras;  
   
  interface  
   
  uses  
          Windows,   SysUtils;  
   
  {$DEFINE   WINVER400}  
  const  
          RasUnitVersion                 =   110;  
          CopyRight         :   String   =   '   RasUnit   (c)   97-98   F.   Piette   V1.10   ';  
          rasapi32                             =   'rasapi32.dll';  
   
          UNLEN                                   =   256;         //   Maximum   user   name   length  
          PWLEN                                   =   256;         //   Maximum   password   length  
          CNLEN                                   =   15;           //   Computer   name   length  
          DNLEN                                   =   CNLEN;     //   Maximum   domain   name   length  
   
          RAS_MaxDeviceType           =   16;  
          RAS_MaxPhoneNumber         =   128;  
          RAS_MaxIpAddress             =   15;  
          RAS_MaxIpxAddress           =   21;  
   
  {$IFDEF   WINVER400}  
          RAS_MaxEntryName             =   256;  
          RAS_MaxDeviceName           =   128;  
          RAS_MaxCallbackNumber   =   RAS_MaxPhoneNumber;  
  {$ELSE}  
          RAS_MaxEntryName             =   20;  
          RAS_MaxDeviceName           =   32;  
          RAS_MaxCallbackNumber   =   48;  
  {$ENDIF}  
   
          RAS_MaxAreaCode               =   10;  
          RAS_MaxPadType                 =   32;  
          RAS_MaxX25Address           =   200;  
          RAS_MaxFacilities           =   200;  
          RAS_MaxUserData               =   200;  
   
          RASCS_OpenPort                         =   0;  
          RASCS_PortOpened                     =   1;  
          RASCS_ConnectDevice               =   2;  
          RASCS_DeviceConnected           =   3;  
          RASCS_AllDevicesConnected   =   4;  
          RASCS_Authenticate                 =   5;  
          RASCS_AuthNotify                     =   6;  
          RASCS_AuthRetry                       =   7;  
          RASCS_AuthCallback                 =   8;  
          RASCS_AuthChangePassword     =   9;  
          RASCS_AuthProject                   =   10;  
          RASCS_AuthLinkSpeed               =   11;  
          RASCS_AuthAck                           =   12;  
          RASCS_ReAuthenticate             =   13;  
          RASCS_Authenticated               =   14;  
          RASCS_PrepareForCallback     =   15;  
          RASCS_WaitForModemReset       =   16;  
          RASCS_WaitForCallback           =   17;  
          RASCS_Projected                       =   18;  
   
  {$IFDEF   WINVER400}  
          RASCS_StartAuthentication   =   19;  
          RASCS_CallbackComplete         =   20;  
          RASCS_LogonNetwork                 =   21;  
  {$ENDIF}  
          RASCS_SubEntryConnected       =   22;  
          RASCS_SubEntryDisconnected=   23;  
   
          RASCS_PAUSED                             =   $1000;  
          RASCS_Interactive                   =   RASCS_PAUSED;  
          RASCS_RetryAuthentication   =   (RASCS_PAUSED   +   1);  
          RASCS_CallbackSetByCaller   =   (RASCS_PAUSED   +   2);  
          RASCS_PasswordExpired           =   (RASCS_PAUSED   +   3);  
   
          RASCS_DONE                                 =   $2000;  
          RASCS_Connected                       =   RASCS_DONE;  
          RASCS_Disconnected                 =   (RASCS_DONE   +   1);  
   
          //   If   using   RasDial   message   notifications,   get   the   notification   message   code  
          //   by   passing   this   string   to   the   RegisterWindowMessageA()   API.  
          //   WM_RASDIALEVENT   is   used   only   if   a   unique   message   cannot   be   registered.  
          RASDIALEVENT         =   'RasDialEvent';  
          WM_RASDIALEVENT   =   $CCCD;  
   
          //   TRASPROJECTION  
          RASP_Amb                 =   $10000;  
          RASP_PppNbf           =   $0803F;  
          RASP_PppIpx           =   $0802B;  
          RASP_PppIp             =   $08021;  
          RASP_Slip               =   $20000;  
   
  type  
          THRASCONN           =   THandle;  
          PHRASCONN           =   ^THRASCONN;  
          TRASCONNSTATE   =   DWORD;  
          PDWORD                 =   ^DWORD;  
          PBOOL                   =   ^BOOL;  
   
          TRASDIALPARAMS   =   packed   record  
                  dwSize                       :   DWORD;  
                  szEntryName             :   array   [0..RAS_MaxEntryName]   of   Char;  
                  szPhoneNumber         :   array   [0..RAS_MaxPhoneNumber]   of   Char;  
                  szCallbackNumber   :   array   [0..RAS_MaxCallbackNumber]   of   Char;  
                  szUserName               :   array   [0..UNLEN]   of   Char;  
                  szPassword               :   array   [0..PWLEN]   of   Char;  
                  szDomain                   :   array   [0..DNLEN]   of   Char;  
  {$IFDEF   WINVER401}  
                  dwSubEntry               :   DWORD;  
                  dwCallbackId           :   DWORD;  
  {$ENDIF}  
                  szPadding                 :   array   [0..2]   of   Char;  
          end;  
          PRASDIALPARAMS   =   ^TRASDIALPARAMS;  
   
          TRASDIALEXTENSIONS   =   packed   record  
                  dwSize           :   DWORD;  
                  dwfOptions   :   DWORD;  
                  hwndParent   :   HWND;  
                  reserved       :   DWORD;  
          end;  
          PRASDIALEXTENSIONS   =   ^TRASDIALEXTENSIONS;  
   
          TRASCONNSTATUS   =   packed   record  
                  dwSize               :   DWORD;  
                  RasConnState   :   TRASCONNSTATE;  
                  dwError             :   DWORD;  
                  szDeviceType   :   array   [0..RAS_MaxDeviceType]   of   char;  
                  szDeviceName   :   array   [0..RAS_MaxDeviceName]   of   char;  
                  szPadding         :   array   [0..1]   of   Char;  
          end;  
          PRASCONNSTATUS   =   ^TRASCONNSTATUS;  
   
          TRASCONN   =   packed   record  
                  dwSize               :   DWORD;  
                  hRasConn           :   THRASCONN;  
                  szEntryName     :   array   [0..RAS_MaxEntryName]   of   char;  
  {$IFDEF   WINVER400}  
                  szDeviceType   :   array   [0..RAS_MaxDeviceType]   of   char;  
                  szDeviceName   :   array   [0..RAS_MaxDeviceName]   of   char;  
  {$ENDIF}  
                  szPadding         :   array   [0..0]   of   Char;  
          end;  
          PRASCONN   =   ^TRASCONN;  
   
          TRASENTRYNAME   =   packed   record  
                  dwSize               :   DWORD;  
                  szEntryName     :   array   [0..RAS_MaxEntryName]   of   char;  
                  szPadding         :   array   [0..2]   of   Char;  
          end;  
          PRASENTRYNAME   =   ^TRASENTRYNAME;  
   
          TRASENTRYDLG   =   packed   record  
                  dwSize               :   DWORD;  
                  hWndOwner         :   HWND;  
                  dwFlags             :   DWORD;  
                  xDlg                   :   LongInt;  
                  yDlg                   :   LongInt;  
                  szEntry             :   array   [0..RAS_MaxEntryName]   of   char;  
                  dwError             :   DWORD;  
                  Reserved           :   DWORD;  
                  Reserved2         :   DWORD;  
                  szPadding         :   array   [0..2]   of   Char;  
          end;  
          PRASENTRYDLG   =   ^TRASENTRYDLG;  
   
          TRASPROJECTION   =   integer;  
          TRASPPPIP   =   record  
                  dwSize     :   DWORD;  
                  dwError   :   DWORD;  
                  szIpAddress   :   array   [0..RAS_MaxIpAddress]   of   char;  
          end;  
   
   
  Top

6 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-03-04 22:24:31 得分 0

function   RasDialA(RasDialExtensions:   PRASDIALEXTENSIONS;  
                                      PhoneBook           :   PChar;  
                                      RasDialParams   :   PRASDIALPARAMS;  
                                      NotifierType     :   DWORD;  
                                      Notifier             :   Pointer;  
                                      RasConn               :   PHRASCONN  
                                    ):   DWORD;   stdcall;  
  function   RasGetErrorStringA(  
                                      uErrorValue       :   DWORD;   //   error   to   get   string   for  
                                      szErrorString   :   PChar;   //   buffer   to   hold   error   string  
                                      cBufSize             :   DWORD     //   size,   in   characters,   of   buffer  
                                    ):   DWORD;   stdcall;  
  function   RasHangupA(RasConn:   THRASCONN):   DWORD;   stdcall;  
  function   RasConnectionStateToString(nState   :   Integer)   :   String;  
  function   RasGetConnectStatusA(  
                                      hRasConn:   THRASCONN;       //   handle   to   RAS   connection   of   interest  
                                      lpRasConnStatus   :   PRASCONNSTATUS   //   buffer   to   receive   status   data  
                                    ):   DWORD;   stdcall;  
  function   RasEnumConnectionsA(  
                                      pRasConn   :   PRASCONN;     //   buffer   to   receive   connections   data  
                                      pCB             :   PDWORD;     //   size   in   bytes   of   buffer  
                                      pcConnections   :   PDWORD   //   number   of   connections   written   to   buffer  
                                    )   :   DWORD;   stdcall  
  function   RasEnumEntriesA(  
                                      Reserved   :   Pointer;     //   reserved,   must   be   NIL  
                                      szPhonebook   :   PChar;     //   full   path   and   filename   of   phonebook   file  
                                      lpRasEntryName   :   PRASENTRYNAME;   //   buffer   to   receive   entries  
                                      lpcb   :   PDWORD;     //   size   in   bytes   of   buffer  
                                      lpcEntries   :   PDWORD     //   number   of   entries   written   to   buffer  
                                    )   :   DWORD;   stdcall;  
  function   RasGetEntryDialParamsA(  
                                      lpszPhonebook   :   PChar;   //   pointer   to   the   full   path   and   filename   of   the   phonebook   file  
                                      lprasdialparams   :   PRASDIALPARAMS;   //   pointer   to   a   structure   that   receives   the   connection   parameters  
                                      lpfPassword   :   PBOOL         //   indicates   whether   the   user's   password   was   retrieved  
                                    )   :   DWORD;   stdcall;  
  function   RasEditPhonebookEntryA(  
                                        hWndParent   :   HWND;           //   handle   to   the   parent   window   of   the   dialog   box  
                                        lpszPhonebook   :   PChar;   //   pointer   to   the   full   path   and   filename   of   the   phonebook   file  
                                        lpszEntryName   :   PChar     //   pointer   to   the   phonebook   entry   name  
                                    )   :   DWORD;   stdcall;  
  //function   RasEntryDlgA(  
  //                                       lpszPhonebook   :   PChar;   //   pointer   to   the   full   path   and   filename   of   the   phone-book   file  
  //                                       lpszEntry   :   PChar;           //   pointer   to   the   name   of   the   phone-book   entry   to   edit,   copy,   or   create  
  //                                       lpInfo   :   PRASENTRYDLG     //   pointer   to   a   structure   that   contains   additional   parameters  
  //                                   )   :   DWORD;   stdcall;  
  function   RasCreatePhonebookEntryA(  
                                            hWndParent   :   HWND;         //   handle   to   the   parent   window   of   the   dialog   box  
                                            lpszPhonebook   :   PChar   //   pointer   to   the   full   path   and   filename   of   the   phonebook   file  
                                        )   :   DWORD;   stdcall;  
   
  function   RasGetProjectionInfoA(  
                                          hRasConn             :   THRASCONN;             //   handle   that   specifies   remote   access   connection   of   interest  
                                          RasProjection   :   TRASPROJECTION;   //   specifies   type   of   projection   information   to   obtain  
                                          lpProjection     :   Pointer;                 //   points   to   buffer   that   receives   projection   information  
                                          lpcb                     :   PDWORD                     //   points   to   variable   that   specifies   buffer   size  
                                        )   :   DWORD;   stdcall;  
  function   RasGetIPAddress:   string;  
   
  implementation  
   
   
  {*   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *}  
  function   RasConnectionStateToString(nState   :   Integer)   :   String;  
  begin  
          case   nState   of  
          RASCS_OpenPort:                           Result   :=   'Opening   Port';  
          RASCS_PortOpened:                       Result   :=   'Port   Opened';  
          RASCS_ConnectDevice:                 Result   :=   'Connecting   Device';  
          RASCS_DeviceConnected:             Result   :=   'Device   Connected';  
          RASCS_AllDevicesConnected:     Result   :=   'All   Devices   Connected';  
          RASCS_Authenticate:                   Result   :=   'Starting   Authentication';  
          RASCS_AuthNotify:                       Result   :=   'Authentication   Notify';  
          RASCS_AuthRetry:                         Result   :=   'Authentication   Retry';  
          RASCS_AuthCallback:                   Result   :=   'Callback   Requested';  
          RASCS_AuthChangePassword:       Result   :=   'Change   Password   Requested';  
          RASCS_AuthProject:                     Result   :=   'Projection   Phase   Started';  
          RASCS_AuthLinkSpeed:                 Result   :=   'Link   Speed   Calculation';  
          RASCS_AuthAck:                             Result   :=   'Authentication   Acknowledged';  
          RASCS_ReAuthenticate:               Result   :=   'Reauthentication   Started';  
          RASCS_Authenticated:                 Result   :=   'Authenticated';  
          RASCS_PrepareForCallback:       Result   :=   'Preparation   For   Callback';  
          RASCS_WaitForModemReset:         Result   :=   'Waiting   For   Modem   Reset';  
          RASCS_WaitForCallback:             Result   :=   'Waiting   For   Callback';  
          RASCS_Projected:                         Result   :=   'Projected';  
  {$IFDEF   WINVER400}  
          RASCS_StartAuthentication:     Result   :=   'Start   Authentication';  
          RASCS_CallbackComplete:           Result   :=   'Callback   Complete';  
          RASCS_LogonNetwork:                   Result   :=   'Logon   Network';  
  {$ENDIF}  
          RASCS_SubEntryConnected:         Result   :=   '';  
          RASCS_SubEntryDisconnected:   Result   :=   '';  
          RASCS_Interactive:                     Result   :=   'Interactive';  
          RASCS_RetryAuthentication:     Result   :=   'Retry   Authentication';  
          RASCS_CallbackSetByCaller:     Result   :=   'Callback   Set   By   Caller';  
          RASCS_PasswordExpired:             Result   :=   'Password   Expired';  
          RASCS_Connected:                         Result   :=   'Connected';  
          RASCS_Disconnected:                   Result   :=   'Disconnected';  
          else  
                  Result   :=   'Connection   state   #'   +   IntToStr(nState);  
          end;  
  end;  
   
   
  {*   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *}  
  function   RasGetIPAddress:   string;  
  var  
          RASConns       :   TRasConn;  
          dwSize           :   DWORD;  
          dwCount         :   DWORD;  
          RASpppIP       :   TRASPPPIP;  
  begin  
          Result                     :=   '';  
          RASConns.dwSize   :=   SizeOf(TRASConn);  
          RASpppIP.dwSize   :=   SizeOf(RASpppIP);  
          dwSize                     :=   SizeOf(RASConns);  
          if   RASEnumConnectionsA(@RASConns,   @dwSize,   @dwCount)   =   0   then   begin  
                  if   dwCount   >   0   then   begin  
                          dwSize   :=   SizeOf(RASpppIP);  
                          RASpppIP.dwSize   :=   SizeOf(RASpppIP);  
                          if   RASGetProjectionInfoA(RASConns.hRasConn,  
                                                                            RASP_PppIp,  
                                                                            @RasPPPIP,  
                                                                            @dwSize)   =   0   then  
                                  Result   :=   StrPas(RASpppIP.szIPAddress);  
                end;  
          end;  
  end;  
   
     
   
  {*   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *}  
  function   RasDialA;   external   rasapi32   name   'RasDialA';  
  function   RasGetErrorStringA;   external   rasapi32   name   'RasGetErrorStringA';  
  function   RasHangUpA;   external   rasapi32   name   'RasHangUpA';  
  function   RasGetConnectStatusA;   external   rasapi32   name   'RasGetConnectStatusA';  
  function   RasEnumConnectionsA;   external   rasapi32   name   'RasEnumConnectionsA';  
  function   RasEnumEntriesA;   external   rasapi32   name   'RasEnumEntriesA';  
  function   RasGetEntryDialParamsA;   external   rasapi32   name   'RasGetEntryDialParamsA';  
  function   RasEditPhonebookEntryA;   external   rasapi32   name   'RasEditPhonebookEntryA';  
  //function   RasEntryDlgA;   external   rasapi32   name   'RasEntryDlgA';  
  function   RasCreatePhonebookEntryA;   external   rasapi32   name   'RasCreatePhonebookEntryA';  
  function   RasGetProjectionInfoA;   external   rasapi32   name   'RasGetProjectionInfoA';  
   
  {*   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *}  
   
  end.  
   
  Top

7 楼jim138()回复于 2005-03-04 22:36:31 得分 0

mark   :)Top

相关问题

  • 如何调用拨号连接?
  • 在WIN95下如何用命令调用“我的连接”拨号?
  • 怎么样调用默认的拨号连接啊
  • 请问怎样在VB程序中调用拨号连接?
  • 如何列举并调用系统的拨号连接?
  • 请问如何在BCB的程序中调用拨号网络中已有的拨号连接?
  • 用shell调用winnt\system32\rasphone.exe,但必须点击连接方可拨号,如何做到直接连接?
  • 使用SocketConnection构件连接时总是自动调用拨号连接,怎么解决?
  • 如何在程序中调用“网络和拨号连接”中的“新建连接”?
  • 调用连接池?

关键词

  • adsl
  • 密码
  • 连接
  • 用户
  • dll
  • ras
  • rasdial
  • 调用
  • 拨号
  • rnaui

得分解答快速导航

  • 帖主:zhaoyu_me
  • pilicat

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo