看了一下以前的帖子RAS的很少有人回答,可是我还是想问!!!RAS拨号上网!!!

roger_xiong 2003-04-08 02:46:44
1、用RAS连接的时候怎么判断现在的进度呢?比如:拨号中……、验证用户名……什么的。
RAS有同步和异步两种方式,使用同步方式会造成程序的假死,使用异步方式却没有办法实时捕获到拨号的错误提示(比如没有拨号音、占线什么的)

2、RAS好像要调用系统已有的拨号连接,那么可不可以不要调用系统已有的拨号连接,自己直接拨号并建立连接呢?

3、错误630是什么意思啊?有水知道RAS的所有错误含义?

4、分不够的话,肯定可以在加。但是我希望能够有有效的答案或思路、方法啊。
...全文
128 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinawzg 2003-05-26
  • 打赏
  • 举报
回复
function RasConnectionStateToString(nState : Integer) : String;
begin
showmessage(inttostr(nstate));

case nState of
RASCS_OpenPort: Result := 'Opening Port';
RASCS_PortOpened: Result := 'Port Opened';
RASCS_ConnectDevice: Result := 'Connecting Device';
RASCS_DeviceConnected: Result := 'Device Connected';
RASCS_AllDevicesConnected: Result := 'All Devices Connected';
RASCS_Authenticate: Result := 'Starting Authentication';
RASCS_AuthNotify: Result := 'Authentication Notify';
RASCS_AuthRetry: Result := 'Authentication Retry';
RASCS_AuthCallback: Result := 'Callback Requested';
RASCS_AuthChangePassword: Result := 'Change Password Requested';
RASCS_AuthProject: Result := 'Projection Phase Started';
RASCS_AuthLinkSpeed: Result := 'Link Speed Calculation';
RASCS_AuthAck: Result := 'Authentication Acknowledged';
RASCS_ReAuthenticate: Result := 'Reauthentication Started';
RASCS_Authenticated: Result := 'Authenticated';
RASCS_PrepareForCallback: Result := 'Preparation For Callback';
RASCS_WaitForModemReset: Result := 'Waiting For Modem Reset';
RASCS_WaitForCallback: Result := 'Waiting For Callback';
RASCS_Projected: Result := 'Projected';
{$IFDEF WINVER400}
RASCS_StartAuthentication: Result := 'Start Authentication';
RASCS_CallbackComplete: Result := 'Callback Complete';
RASCS_LogonNetwork: Result := 'Logon Network';
{$ENDIF}
RASCS_SubEntryConnected: Result := '';
RASCS_SubEntryDisconnected: Result := '';
RASCS_Interactive: Result := 'Interactive';
RASCS_RetryAuthentication: Result := 'Retry Authentication';
RASCS_CallbackSetByCaller: Result := 'Callback Set By Caller';
RASCS_PasswordExpired: Result := 'Password Expired';
RASCS_Connected: Result := 'Connected';
RASCS_Disconnected: Result := 'Disconnected';
else
Result := 'Connection state #' + IntToStr(nState);
end;
end;


这是一个拔号的状态显示的

至于不用内部的拔号连接是不行的,至少有一个,电话什么的,可能改的
roger_xiong 2003-05-13
  • 打赏
  • 举报
回复
up
xkdh 2003-04-11
  • 打赏
  • 举报
回复
我用df写了个单元。希望你能用的着。
unit rasapi32;

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
{ 确认一活动的拨号连接. (为RasConnectEnum函数使用) }
PRASConn = ^TRASConn;//拨号连接的句柄类型
TRASConn = record
dwSize: DWORD;//该结构类型所占内存的字节大小
rasConn: DWORD;//活动连接的句柄
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
lpszPhonebook : PChar; //在WIN9X下无用,可设置为NIL
lpRasDialParams : PRASDIALPARAMS; // 拨号参数,类型指针
dwNotifierType : DWORD; { 消息通知方式}
lpvNotifier : DWORD; { 消息处理事件}
var rasConn : DWORD{ 返回成功连接的连接句柄}
): 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 : Dword; { 指定活动连接的句柄 }
RASConnStatus: PRASConnStatus { 获取活动连接状态信息的缓冲区}
): LongInt; stdcall;
function RasGetErrorString(ErrorCode : DWord; { 错误代码标识}
szErrorString: PChar; { 错误提示信息的缓冲区}
BufSize : DWord {错误提示信息的缓冲区的大小 }
): LongInt; stdcall;
function RasHangUp(RASConn: Dword ): LongInt; stdcall;
function RasGetEntryDialParams(
lpszPhonebook :PChar; {电话本名称,在WIN9X下无用,可设置为NIL }
VAR lprasdialparams:TRASDIALPARAMS; {拨号参数,是一类型指针}
VAR lpfPassword : BOOL {显示是否需要用户密码}
): DWORD; stdcall;

implementation
const
RAS_DLL = 'RASAPI32.DLL';
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.

roger_xiong 2003-04-09
  • 打赏
  • 举报
回复
网上关于RAS的说明少之又少啊!!!
roger_xiong 2003-04-08
  • 打赏
  • 举报
回复
JennyVenus() 兄,你给的两个网页我很早就看过了,还是不太明白,想详细了解一下。

另烦劳解释一下WinAPIError函数如何使用,FormatMessage还要加上API声明这我知道。
用户 昵称 2003-04-08
  • 打赏
  • 举报
回复
Public Function WinAPIError(ByVal lLastDLLError As Long) As String
Dim sBuff As String
Dim lCount As Long

  '返回与LastDLLError相关的出错信息:
  sBuff = String$(256, 0)
  lCount = FormatMessage( _
   FORMAT_MESSAGE_FROM_SYSTEM Or FORMAT_MESSAGE_IGNORE_INSERTS, _
   0, lLastDLLError, 0&, sBuff, Len(sBuff), ByVal 0)
  If lCount Then
   WinAPIError = Left$(sBuff, lCount)
  End If

End Function
用户 昵称 2003-04-08
  • 打赏
  • 举报
回复
http://www.china-askpro.com/msg1/qa35.shtml
http://www.yesky.com/20011231/212571.shtml

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧