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

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

        用Delphi編寫(xiě)可以斷開(kāi)Internet連接的程序

        用Delphi編寫(xiě)可以斷開(kāi)Internet連接的程序

        更新時(shí)間:2022-04-26 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

        在WIN9X下,如果安裝了撥號(hào)網(wǎng)絡(luò),則在WINDOWS的系統(tǒng)目錄(System目錄)下將有兩個(gè)撥號(hào)網(wǎng)絡(luò)管理程序庫(kù)RasApi32.DLL 和RasApi16.DLL,因此我們可以利用RAS(遠(yuǎn)程訪問(wèn)服務(wù))系列函數(shù)實(shí)現(xiàn)斷開(kāi)指定的撥號(hào)連接。在這里我們將使用RasHangUp函數(shù)。然而如何正確使用這些API函數(shù)是完成應(yīng)用程序的關(guān)鍵。
          掛斷撥號(hào)連接的RasApi32函數(shù)為RasHangUp,其函數(shù)原型為:
          RasHangUp(
            HRASCONN : DWORD
           ):DWORD;stdcall;
          參數(shù)說(shuō)明:
          HRASCONN : DWORD要掛斷的撥號(hào)連接的句柄,此句柄是來(lái)源由調(diào)用函數(shù)RasEnumConnections的返回值。
          返回值:函數(shù)的返回值為0表示執(zhí)行成功;不為0執(zhí)行失敗。
          由上面的函數(shù)得知:我們必須首先獲得撥號(hào)連接的句柄,因此在應(yīng)用程序中還需使用RasEnumConnections函數(shù)。
          獲取所有活動(dòng)的撥號(hào)連接的信息列表(連接句柄和電話號(hào)碼)的RasApi32函數(shù)為RasEnumConnections,其函數(shù)原型為:
          RasEnumConnections(LPRASCONN lprasconn,LPDWORD lpcb,LPDWORD lpcConnections) :DWORD;stdcall;
          參數(shù)說(shuō)明:
          lprasconn:接收活動(dòng)連接的緩沖區(qū)的指針;
          lpcb:接收緩沖區(qū)的字節(jié)大小;
          lpcConnections:實(shí)際的活動(dòng)連接數(shù)。
          返回值函數(shù)的返回值為0表示執(zhí)行成功;不為0執(zhí)行失敗。
          為了正確使用這兩個(gè)函數(shù),我們要事先定義函數(shù),常數(shù),結(jié)構(gòu)類型及其他信息,有關(guān)這一部份的內(nèi)容都寫(xiě)入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;//撥號(hào)連接數(shù)組(假設(shè)最多有10個(gè)活動(dòng)的撥號(hào)連接)
             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('斷開(kāi)失敗');
               end
               else
                ShowMessage('斷開(kāi)成功');
               end;
           end;

          unit rasapi;

          interface

           Uses WinTypes, WinProcs, Dialogs;

           Const

           UNLEN = 256;
           PWLEN = 256;
           DNLEN = 15;
           RAS_MaxEntryName   = 256;//連接名稱最大長(zhǎng)度
           RAS_MaxDeviceName   = 128;//設(shè)備名稱最大長(zhǎng)度
           RAS_MaxDeviceType   = 16;//設(shè)備類型名稱長(zhǎng)度
           { RAS_MaxParamKey   = 32;
           RAS_MaxParamValue   = 128;}
           RAS_MaxPhoneNumber  = 128;//電話號(hào)碼的最大長(zhǎng)度
           RAS_MaxCallbackNumber = RAS_MaxPhoneNumber;

           Type

           {UINT = Word;}
           PHRASConn = ^HRASConn;
           Type

           { 確認(rèn)一活動(dòng)的撥號(hào)連接. (為RasConnectEnum函數(shù)使用) }

           PRASConn = ^TRASConn;//撥號(hào)連接的句柄類型
           TRASConn = record
             dwSize: DWORD;//該結(jié)構(gòu)類型所占內(nèi)存的字節(jié)大小
             rasConn: HRASConn;//活動(dòng)連接的句柄
             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;

          //撥號(hào)函數(shù)

           Function RasDial(
             lpRasDialExtensions : PRASDIALEXTENSIONS ; //在WIN9X下無(wú)用,可設(shè)置為NIL
             lpszPhonebook: PChar; //在WIN9X下無(wú)用,可設(shè)置為NIL
             lpRasDialParams : PRASDIALPARAMS; // 撥號(hào)參數(shù),類型指針
             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下無(wú)用,可設(shè)置為NIL}
             lprasentryname: PRASENTRYNAME ; {接收撥號(hào)連接名稱的緩沖區(qū),是一類型數(shù)組的指針}
             var lpcb :     DWORD; {接收撥號(hào)連接名稱的緩沖區(qū)的大小}
             var lpcEntries : DWORD  {實(shí)際獲得撥號(hào)連接 的數(shù)目}
            ) : DWORD; stdcall;

           function RasGetConnectStatus(RASConn: hrasConn;    { 指定活動(dòng)連接的句柄 }
                   RASConnStatus: PRASConnStatus { 獲取活動(dòng)連接狀態(tài)信息的緩沖區(qū)}
             ): LongInt; stdcall;

           function RasGetErrorString(ErrorCode: DWord;    { 錯(cuò)誤代碼標(biāo)識(shí)}
                        szErrorString: PChar;    { 錯(cuò)誤提示信息的緩沖區(qū)}
                        BufSize: DWord   {錯(cuò)誤提示信息的緩沖區(qū)的大小 }
                        ): LongInt; stdcall;

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

           function RasGetEntryDialParams(
             lpszPhonebook:PChar;    {電話本名稱,在WIN9X下無(wú)用,可設(shè)置為NIL }
             VAR lprasdialparams:TRASDIALPARAMS; {撥號(hào)參數(shù),是一類型指針}
             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環(huán)境下調(diào)試通過(guò)。

        溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 在线a亚洲v天堂网2019无码| 免费乱理伦在线播放| 亚洲AV综合色区无码一区爱AV| 免费人成大片在线观看播放电影| 国产aa免费视频| 香蕉国产在线观看免费| 亚洲A∨精品一区二区三区| 亚洲成人精品久久| 美女被免费视频网站a| 亚洲AV无码成H人在线观看 | 最新仑乱免费视频| 自拍偷区亚洲国内自拍| 永久免费AV无码网站国产| 亚洲AV无码专区电影在线观看 | 国产免费黄色无码视频| 久久亚洲精品视频| 日韩成人毛片高清视频免费看| 免费人成网站在线高清| 久久嫩草影院免费看夜色| 亚洲成A人片777777| 精品免费人成视频app| 亚洲国产另类久久久精品小说| 国内精品一级毛片免费看| 亚洲精品不卡视频| 暖暖在线日本免费中文| 91嫩草私人成人亚洲影院| 69成人免费视频无码专区| 又黄又大的激情视频在线观看免费视频社区在线 | 91av免费在线视频| 免费a级毛片大学生免费观看| jizz日本免费| 亚洲色欲www综合网| 国产麻豆剧传媒精品国产免费 | a级毛片免费网站| 亚洲精品美女视频| 免费人成网站在线播放| 99精品视频免费在线观看| 亚洲成a∧人片在线观看无码| 大学生高清一级毛片免费| 亚洲日本乱码卡2卡3卡新区| 免费一级毛片不卡不收费|