• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        用Delphi編寫可以斷開Internet連接的程序

        用Delphi編寫可以斷開Internet連接的程序

        更新時間:2022-04-26 文章作者:未知 信息來源:網絡 閱讀次數:

        在WIN9X下,如果安裝了撥號網絡,則在WINDOWS的系統目錄(System目錄)下將有兩個撥號網絡管理程序庫RasApi32.DLL 和RasApi16.DLL,因此我們可以利用RAS(遠程訪問服務)系列函數實現斷開指定的撥號連接。在這里我們將使用RasHangUp函數。然而如何正確使用這些API函數是完成應用程序的關鍵。
          掛斷撥號連接的RasApi32函數為RasHangUp,其函數原型為:
          RasHangUp(
            HRASCONN : DWORD
           ):DWORD;stdcall;
          參數說明:
          HRASCONN : DWORD要掛斷的撥號連接的句柄,此句柄是來源由調用函數RasEnumConnections的返回值。
          返回值:函數的返回值為0表示執行成功;不為0執行失敗。
          由上面的函數得知:我們必須首先獲得撥號連接的句柄,因此在應用程序中還需使用RasEnumConnections函數。
          獲取所有活動的撥號連接的信息列表(連接句柄和電話號碼)的RasApi32函數為RasEnumConnections,其函數原型為:
          RasEnumConnections(LPRASCONN lprasconn,LPDWORD lpcb,LPDWORD lpcConnections) :DWORD;stdcall;
          參數說明:
          lprasconn:接收活動連接的緩沖區的指針;
          lpcb:接收緩沖區的字節大小;
          lpcConnections:實際的活動連接數。
          返回值函數的返回值為0表示執行成功;不為0執行失敗。
          為了正確使用這兩個函數,我們要事先定義函數,常數,結構類型及其他信息,有關這一部份的內容都寫入rasapi.pas單元。
          源程序:
          program main;

          uses

           Forms,
           Unit1 in 'Unit1.pas' {Form1},
           rasapi in 'rasapi.pas';

          {$R *.RES}

          begin
           Application.Initialize;
           Application.CreateForm(TForm1, Form1);
           Application.Run;
          end.

          unit Unit1;

          interface

          uses

           Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
           StdCtrls, DdeMan;

          type

           TForm1 = class(TForm)
            Button1: TButton;
            procedure Button1Click(Sender: TObject);
           private
            { Private declarations }
             public
            { Public declarations }
           end;

          var

           Form1: TForm1;

          implementation

           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 = Word;}
           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: Word;
             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: DWord;
                 var Connections: DWord
            ): 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: DWord;    { 錯誤代碼標識}
                        szErrorString: PChar;    { 錯誤提示信息的緩沖區}
                        BufSize: DWord   {錯誤提示信息的緩沖區的大小 }
                        ): 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.


          以上代碼在PWIN98+DELPHI5環境下調試通過。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 婷婷久久久亚洲欧洲日产国码AV| 免费一级黄色毛片| 国产AV无码专区亚洲AVJULIA| 苍井空亚洲精品AA片在线播放| 欧美最猛性xxxxx免费| 亚洲毛片基地4455ww| 中文字幕无码视频手机免费看| 亚洲日韩乱码久久久久久| av无码免费一区二区三区| 亚洲成av人片在线看片| 国产大片线上免费观看| 亚洲女子高潮不断爆白浆| 日韩免费三级电影| 免费福利资源站在线视频| 亚洲精品一级无码中文字幕| 亚洲精品视频免费| 亚洲av无码片在线播放| 91高清免费国产自产拍2021| 亚洲日韩在线视频| 永久中文字幕免费视频网站| 在线精品自拍亚洲第一区| 久久久久亚洲?V成人无码| 免费91麻豆精品国产自产在线观看| 亚洲精品福利视频| 女性无套免费网站在线看| 青青久久精品国产免费看| 国产亚洲精品xxx| 亚洲免费在线视频观看| 亚洲av最新在线观看网址| 久久精品国产精品亚洲下载| 久久99精品免费视频| 亚洲ts人妖网站| 亚洲国产精品碰碰| 无码国产精品一区二区免费模式 | 亚洲欧洲自拍拍偷午夜色无码| 一区二区在线免费观看| 亚洲精品无码一区二区| 亚洲精品无码成人片在线观看 | 久久精品国产亚洲Aⅴ香蕉 | 成人毛片免费观看| 久久av免费天堂小草播放|