首 页
┆
源码下载
┆
IT学院
┆
字体下载
┆
模板下载
┆
源码发布
┆
广告合作
┆
网站地图
►
设为首页
►
加入收藏
►
联系我们
源码下载
>>
ASP源码
|
PHP源码
|
ASP.net源码
|
JSP源码
|
CGI源码
|
VC/C++源码
|
VB源码
|
Delphi源码
|
Flash源码
文章学院
>>
网络编程
|
网页设计
|
图形图象
|
数据库
|
服务器
|
网络媒体
|
网络安全
|
操作系统
|
办公软件
|
软件开发
|
黑客知识
字体下载
>>
精制字体
|
非英字体
|
艺术字体
|
著名字体
|
哥特式
|
简单字体
|
手写体
|
节假日
|
图案字体
|
精度像素
|
中文字体
模板下载
>>
企业门户
|
数码网络
|
休闲娱乐
|
影视音乐
|
旅游名胜
|
文化艺术
|
电子商务
|
个性展示
|
登陆导航
|
Flash模板
源码搜索
文章搜索
字体搜索
模板搜索
►►
您当前的位置:
源码园
→
IT学院
→
软件开发
→
Delphi编程
→ 文章内容
用Delphi编写可以断开Internet连接的程序
作者:佚名 来源:网上收集 发布时间:2005-12-10 0:20:05
在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
lpszPhone
book: PChar; //在WIN9X下无用,可设置为NIL
lpRasDialParams : PRASDIALPARAMS; // 拨号参数,类型指针
dwNotifierType : DWORD; { 消息通知方式}
lpvNotifier: DWORD; { 消息处理事件}
var rasConn: HRASConn { 返回成功连接的连接句柄}
): DWORD; stdcall;
function RasEnumConnections(RASConn: PrasConn;
var BufSize: D
Word;
var Connections: D
Word
): LongInt; stdcall;
Function RasEnumEntries (
reserved: PChar; {保留字段,必须为空}
lpszPhone
book: PChar ; { 电话本名称,在WIN9X下无用,可设置为NIL}
lprasentryname: PRASENTRYNAME ; {接收拨号连接名称的缓冲区,是一类型数组的指针}
var lpcb : DWORD; {接收拨号连接名称的缓冲区的大小}
var lpcEntries : DWORD {实际获得拨号连接 的数目}
) : DWORD; stdcall;
function RasGetConnectStatus(RASConn: hrasConn; { 指定活动连接的句柄 }
RASConnStatus: PRASConnStatus { 获取活动连接状态信息的缓冲区}
): LongInt; stdcall;
function RasGetErrorString(ErrorCode: D
Word; { 错误代码标识}
szErrorString: PChar; { 错误提示信息的缓冲区}
BufSize: D
Word {错误提示信息的缓冲区的大小 }
): LongInt; stdcall;
function RasHangUp(RASConn: hrasConn ): LongInt; stdcall;
function RasGetEntryDialParams(
lpszPhone
book: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环境下调试通过。
[] [
返回上一页
] [
打 印
]
上一篇文章:
在DELPHI中利用API实现网格内组件的嵌入
下一篇文章:
如何在Delphi中实现ASP编程
相关文章:
[图文]
利用Delphi编制IP地址转换器
[图文]
用Delphi实现动态获取版本信息
[图文]
用Delphi客户端访问EJB组件
[组图]
用Delphi轻松实现背景播放
用Delphi实现IP地址的隐藏
用Delphi实现软件的在线升级
用Delphi制作以浏览器为界面的应用程序
用Delphi编写VxD设备驱动程序
用Delphi进行OpenGL编程学习心得
用Delphi制作动态菜单
[图文]
用Delphi设计“抢三十”游戏
利用Delphi编写Socket通信程序
关于本站
-
网站帮助
-
广告合作
-
下载声明
-
友情连接
-
网站地图
-
源码发布
Copyright © 2003-2009
Ymyasp
.Com
. All Rights Reserved .
备案序号:粤ICP备07029071号