六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

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

[摘要]在WIN9X下,如果安裝了撥號網絡,則在WINDOWS的系統目錄(System目錄)下將有兩個撥號網絡管理程序庫RasApi32.DLL 和RasApi16.DLL,因此我們可以利用RAS(遠程訪問...
在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環境下調試通過。


主站蜘蛛池模板: 日本一本二本在线观看 | 日本三级在在线观看 | 先锋资源国产 | 手机看片自拍自拍自拍自视频 | 视频一区 日韩 | 亚洲六月丁香六月婷婷蜜芽 | 青青草好| 一区二区三区视频在线播放 | 亚洲免费网站观看视频 | 色橹橹高清视频在线播放 | 青春草在线观看精品免费视频 | 青青青青久在线观看视频 | 午夜在线播放 | 日韩免费不卡 | 天天摸天天干 | 日本中文在线视频 | 亚洲欧美日本韩国综合在线观看 | 四虎影院在线看 | 日韩大片免费在线观看 | 亚洲婷婷丁香 | 青青草免费在线观看视频 | 日本亚洲乱码中文字幕影院 | 亚洲精品高清在线 | 欧美又粗又长 | 日韩久久中文字幕 | 伊人网在线视频观看 | 欧美一级做一级爱a做片性 欧美一级做一a做片性视频 | 一级黄色a级片 | 一二三四在线手机观看视频 | 日本高清网 | 日本黄大片 在线播放 | 午夜国产高清精品一区免费 | 午夜激情啪啪 | 中文字幕高清有码在线中字 | 日本成人精品 | 中文学幕专区 | 亚洲一级大黄大色毛片 | 深夜久久 | 日韩中文字幕在线免费观看 | 青青青国产精品视频 | 色偷偷亚洲 |