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;
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 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.