当前位置:首页 > 网络编程 > 软件语言 > DELPHI > 用Delphi编写可以断开Internet连接的程序

用Delphi编写可以断开Internet连接的程序

点击次数:63 次 发布日期:2008-11-09 08:39:44 作者:源代码网
源代码网推荐
广告载入中
在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("断开失败"); 软件开发网 www.mscto.com
源代码网推荐        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;//
软件开发网 www.mscto.com

源代码网推荐      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(

软件开发网 www.mscto.com


源代码网推荐      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环境下调试通过。


源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华