我的机器是XP的,我用winexec('rundll32.exe rnaui.dll,RnaDial'+'ADSL',9);报告错误:找不到rnaui.dll模块?怎么回事????????????

解决方案 »

  1.   

    unit libRasDial;
    interface
    uses
      Windows, SysUtils, Registry, WinSock, WinInet, Ras;
    function  _IsConnectedToInternet: Boolean;
    function  _DoConnect(hwndParent:HWND): Boolean;
    function  _GetRasConnNum: Integer;
    procedure _DoNew(hwndParent:HWND);
    function RasEnumEntriesA(Reserved: Pointer;
                             szPhonebook: PChar;
                             lpRasEntryName: PRASENTRYNAME;
                             lpcb : PDWORD;
                             lpcEntries : PDWORD
                             ): DWORD; stdcall;
    function RasGetErrorStringA(uErrorValue   : DWORD;
                                szErrorString : PChar;
                                cBufSize      : DWORD
                                ): DWORD; stdcall;
    function RasCreatePhonebookEntryA(hWndParent : HWND;
                                      lpszPhonebook : PChar
                                      ) : DWORD; stdcall;
    var Conn: DWORD;
    implementation
    const
      INTERNET_CONNECTION_MODEM           = 1;
      INTERNET_CONNECTION_LAN             = 2;
      INTERNET_CONNECTION_PROXY           = 4;
      INTERNET_CONNECTION_MODEM_BUSY      = 8;
    function InternetGetConnectedState(lpdwFlags: LPDWORD;
      dwReserved: DWORD): BOOL; stdcall; external 'WININET.DLL';
    function  _IsConnectedToInternet: Boolean;
    var
      dwConnectionTypes: Integer;
    begin
      try
        dwConnectionTypes := INTERNET_CONNECTION_MODEM +
                             INTERNET_CONNECTION_LAN +
                             INTERNET_CONNECTION_PROXY;
        if InternetGetConnectedState(@dwConnectionTypes, 0) then
          Result := true
        else
          Result := false;
      except
        Result := false;
      end;
    end;
    function  _DoConnect(hwndParent:HWND):Boolean;
    begin
      Result:= false;
      if _GetRasConnNum=0 then _DoNew(hwndParent);
      if _GetRasConnNum=0 then exit;
      InternetDial(hwndparent,
                   '',
                   INTERNET_AUTODIAL_FORCE_ONLINE,
                   @Conn,
                   0);
      if Conn<>0 then Result:=true;
    end;
    function _GetRasConnNum: Integer;
    var
      Entries  : array [0..15] of TRASENTRYNAME;
      cb       : DWORD;
      cEntries : DWORD;
      dwRet    : DWORD;
      Buf      : array [0..127] of char;
    begin
      FillChar(Entries, SizeOf(Entries), 0);
      Entries[0].dwSize := SizeOf(TRASENTRYNAME);
      cb := SizeOf(Entries);
      cEntries := 0;
      dwRet := RasEnumEntriesA(NIL, NIL, @Entries[0], @cb, @cEntries);
      if dwRet <> 0 then RasGetErrorStringA(dwRet, @Buf[0], SizeOf(Buf));
      Result:= cEntries;
    end;
    procedure _DoNew(hwndParent:HWND);
    var
      dwRet: DWORD;
      Buf  : Array [0..127] of char;
    begin
      dwRet := RasCreatePhonebookEntryA(hwndParent, nil);
      if dwRet <> 0 then RasGetErrorStringA(dwRet, @Buf[0], SizeOf(Buf));
    end;
    function RasEnumEntriesA; external rasapi32 name 'RasEnumEntriesA';
    function RasGetErrorStringA; external rasapi32 name 'RasGetErrorStringA';
    function RasCreatePhonebookEntryA; external rasapi32 name 'RasCreatePhonebookEntryA';
    end.
      

  2.   

    unit Ras;
    interface
    uses
      Windows;
    const
    {$IFDEF WINVER400}
        RAS_MaxEntryName      = 256;
    {$ELSE}
        RAS_MaxEntryName      = 20;
    {$ENDIF}
        rasapi32              = 'rasapi32.dll';
    type
        TRASENTRYNAME = packed record
            dwSize       : DWORD;
            szEntryName  : array [0..RAS_MaxEntryName] of char;
            szPadding    : array [0..2] of Char;
        end;
        PRASENTRYNAME = ^TRASENTRYNAME;
    implementation
    end.var
      Form1: TForm1;implementationuses Ras, libRasDial, WinInet ;
    {$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      _DoConnect(0);//拨号end;procedure TForm1.Button2Click(Sender: TObject);
    begin
        if Conn <> 0 then
        InternetHangUp(Conn,0);//断开       end;