程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 用Delphi編寫可以斷開Internet連接的程序

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

編輯:Delphi
在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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved