DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: pesamo
今日帖子: 10
在线用户: 12
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 sefox (OldFox) ★☆☆☆☆ -
盒子活跃会员
2004/2/22 9:36:55
标题:
天那,没人知道吗 浏览:1563
加入我的收藏
楼主: 我等了很久,可....

我在网络上找到的一个挂断连接的程序,可经过测试却发现这里有一些错误。
由于自身水平有限,请各位帮忙调试一下。

如果有结果,请告诉我。

多谢。

  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;

   PRASDIALEXTENSIon__S= ^TRASDIALEXTENSIONS; 
   TRASDIALEXTENSIon__S= 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.


----------------------------------------------
给口饭吃吧,各位......
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/22 9:44:27
1楼: 人家工作都很忙,没耐心帮你测试这么长的程序,自己勤奋吧!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 ciilrain (飞狗) ★☆☆☆☆ -
盒子活跃会员
2004/2/22 10:13:38
2楼: 是不是你某些变量要改改?有的变量你不能直接拷贝他的教程的,要自己根据实际情况改改的,着就要你完全读懂程序了
----------------------------------------------
按此在新窗口浏览图片
作者:
男 sefox (OldFox) ★☆☆☆☆ -
盒子活跃会员
2004/2/22 11:27:18
3楼: 其中总是在 ^^HRASConn 这里出问题
^ 是什么意思????
----------------------------------------------
给口饭吃吧,各位......
作者:
男 loubingtt (我的生活与你无关) ★☆☆☆☆ -
盒子活跃会员
2004/2/22 15:33:43
4楼: 不知道你是干什么。你可以看看一些木马代码。那有使计算机掉 线的。。。。
----------------------------------------------
按此在新窗口浏览图片
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行62.5毫秒 RSS