用Delphi编写可以断开Internet连接的程序
点击次数:63 次 发布日期:2008-11-09 08:39:44 作者:源代码网
|
源代码网推荐 挂断拨号连接的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环境下调试通过。 源代码网推荐 源代码网供稿. |
