有关拨号网络服务器的问题(100分)

  • 主题发起人 主题发起人 cmtan
  • 开始时间 开始时间
C

cmtan

Unregistered / Unconfirmed
GUEST, unregistred user!
想用Delphi实现如下功能:

1. 启动win98的拨号网络服务器
2. 关闭
3. 检测其状态

多谢.
 
你是否想......?!
 
深度历险有详细的sample和控件,都有源代码
 
这个功能的实现是利用Windows的RAS API,Energy说得没错,
在深度历险上有许多例子,建议好好看看。
 
倾听赐教.
Email:samecaoyh@sina.com
 
时间太久啦
 
我打了两遍都不小心ESCAPE掉了,只好简单说了。

远程访问服务RAS函数由RASAPI32.DLL提供,DELPHI没有提供宣告档,在深度历险的WIN API
宣告档中可找到(RAS.PAS、RAS32.PAS或RASAPI.PAS)。

建立连接
RasDial(nil, nil, DialParams, 0, @RasCallBack, hRas);
前两个参数在Win98中不用,DialParams为结构
TDialParams
{
记录长度 SizeOf(TDialParams)
地址簿 PChar('')或PChar('我的连接')
呼叫号码 PChar('1234567')
回叫号码 PChar('')
用户名 PChar('login')
密码 PChar('password')
NT域 PChar('domain')
}
后一个0表示消息处理为回调函数,FFFFFFFF表示消息处理为窗口句柄,nil为同步调用
@RasCallBack为回调函数指针。
hRas为连接句柄。

断开连接
RasHangUp(hRas)
由于不会立即断开,要用RasGetConnectStatus(hRas, Status)判断Status为TRasConnStatus
类型
if RasHangUp(hRas) = 0 then
begin
Status.dwSize := SizeOf(TRasConnStatus);
AReturn := RasGetConnectStatus(hRas, Status);
while AReturn <> ERROR_INVALID_HANDLE do
AReturn := RasGetConnectStatus(hRas, Status);
end
else
失败;

监测状态
可在RasCallBack函数中用RasGetConnectStatus判断各种状态。

其他函数
RasGetErrorString, RasEnumConnections, RasEnumEntris可查阅MSDN
 
“时间太久”是因为没有人给出正确的答案,或者说因为我没看到 :-)

看看这个就知道了(注意看我的回答):
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=224844
 
多人接受答案了。
 
后退
顶部