⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit2.pas

📁 宽带的连接和中断源码 很好很强大很好很强大
💻 PAS
字号:
uses rasapi;

  {$R *.DFM}

  procedure TForm1.Button1Click(Sender: TObject);

  var

     bufsize: Cardinal;

     numEntries: Cardinal;

     x: Integer;

     entries: array[1..10] of TRasConn; //拨号连接数组(假设最多有10个活动的拨号连接)

     stat: TRasConnStatus;

     hRas: HRasConn;

     conexion: pRasConn;

   begin

      entries[1].dwSize := SizeOf(TRasConn);

      bufsize := SizeOf(TRasConn) * 10;

      FillChar(stat, Sizeof(TRasConnStatus), 0);

      stat.dwSize := Sizeof(TRasConnStatus);

      if RasEnumConnections(@entries[1], bufsize, numEntries) = 0 then

       begin

          if numEntries > 0 then

           with entries[1] do

             begin

              conexion := Pointer(rasconn);

              hRas := Longint(conexion);

        

              if RasHangUp(hRas) <> 0 then

        

               ShowMessage('断开失败');

            
    end

            
else

          ShowMessage('断开成功');

        
end;

  
end;

  unit rasapi;

  interface

   uses WinTypes, WinProcs, Dialogs;

   const

     UNLEN = 256;

     PWLEN = 256;

     DNLEN = 15;

     RAS_MaxEntryName   = 256; //连接名称最大长度

     RAS_MaxDeviceName   = 128; //设备名称最大长度

     RAS_MaxDeviceType   = 16; //设备类型名称长度

     { RAS_MaxParamKey   = 32;

     RAS_MaxParamValue   = 128;}

     RAS_MaxPhoneNumber   = 128; //电话号码的最大长度

     RAS_MaxCallbackNumber = RAS_MaxPhoneNumber;

   type

     {UINT = ;}

     PHRASConn = ^HRASConn;

   type

     { 确认一活动的拨号连接. (为RasConnectEnum函数使用) }

     PRASConn = ^TRASConn; //拨号连接的句柄类型

     TRASConn = record

         dwSize: DWORD; //该结构类型所占内存的字节大小

         rasConn: HRASConn; //活动连接的句柄

         szEntryName: array[0..RAS_MaxEntryName] of Char; //

         szDeviceType: array[0..RAS_MaxDeviceType] of Char;

         szDeviceName: array[0..RAS_MaxDeviceName] of char;

      
  end;

     PRASConnStatus = ^TRASConnStatus;

     TRASConnStatus = record

         dwSize: LongInt;

         rasConnstate: ;

         dwError: LongInt;

         szDeviceType: array[0..RAS_MaxDeviceType] of Char;

         szDeviceName: array[0..RAS_MaxDeviceName] of Char;

      
  end;

     PRASDIALEXTENSIONS = ^TRASDIALEXTENSIONS;

     TRASDIALEXTENSIONS = record

         dwSize: DWORD;

         dwfOptions: DWORD;

         hwndParent: HWnd;

         reserved: DWORD;

        end;

       PRASDialParams = ^TRASDialParams;

       TRASDialParams = 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;

        
    end;

       PRASEntryName = ^TRASEntryName;

       TRASEntryName = record

           dwSize: LongInt;

           szEntryName: array[0..RAS_MaxEntryName] of Char;

         {  Reserved: Byte;}

        
    end;

       //拨号函数



  function RasDial(

       lpRasDialExtensions: PRASDIALEXTENSIONS; //在WIN9X下无用,可设置为NIL

       lpszPhonebook: PChar; //在WIN9X下无用,可设置为NIL

       lpRasDialParams: PRASDIALPARAMS; // 拨号参数,类型指针

       dwNotifierType: DWORD;    { 消息通知方式}

       lpvNotifier: DWORD;      { 消息处理事件}

       var rasConn: HRASConn     { 返回成功连接的连接句柄}

      ): DWORD; stdcall;

     function RasEnumConnections(RASConn: PrasConn;

                var BufSize: D;

             var Connections: D

                    ): LongInt; stdcall;

       function RasEnumEntries(

           reserved: PChar;      {保留字段,必须为空}

           lpszPhonebook: PChar;      { 电话本名称,在WIN9X下无用,可设置为NIL}

           lprasentryname: PRASENTRYNAME; {接收拨号连接名称的缓冲区,是一类型数组的指针}

           var lpcb:      DWORD; {接收拨号连接名称的缓冲区的大小}

           var lpcEntries: DWORD   {实际获得拨号连接 的数目}

          ): DWORD; stdcall;

         function RasGetConnectStatus(RASConn: hrasConn;      { 指定活动连接的句柄 }

                   RASConnStatus: PRASConnStatus { 获取活动连接状态信息的缓冲区}

                        ): LongInt; stdcall;

           function RasGetErrorString(ErrorCode: D;      { 错误代码标识}

                          szErrorString: PChar;      { 错误提示信息的缓冲区}

                          BufSize: D   {错误提示信息的缓冲区的大小 }

                          ): LongInt; stdcall;

             function RasHangUp(RASConn: hrasConn): LongInt; stdcall;

               function RasGetEntryDialParams(

                   lpszPhonebook: PChar;      {电话本名称,在WIN9X下无用,可设置为NIL }

                   var lprasdialparams: TRASDIALPARAMS; {拨号参数,是一类型指针}

                   var lpfPassword: BOOL     {显示是否需要用户密码}

                  ): DWORD; stdcall;

               implementation

             const

                 RAS_DLL = 'RASAPI32';

               function RasDial; external RAS_DLL name 'RasDialA';

   function RasEnumConnections; external RAS_DLL name 'RasEnumConnectionsA';

   function RasEnumEntries; external RAS_DLL name 'RasEnumEntriesA';

   function RasGetConnectStatus; external RAS_DLL name 'RasGetConnectStatusA';

   function RasGetErrorString; external RAS_DLL name 'RasGetErrorStringA';

   function RasHangUp; external RAS_DLL name 'RasHangUpA';

   function RasGetEntryDialParams; external RAS_DLL name 'RasGetEntryDialParamsA';

  end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -