关于“拨号上网”的有关问题(共200分),不能用控件。(200分)

  • 主题发起人 主题发起人 leo.yuan
  • 开始时间 开始时间
L

leo.yuan

Unregistered / Unconfirmed
GUEST, unregistred user!
关于“拨号上网”的有关问题(共200分),不能用控件。

问题一: 如何用DELPHI读出网络拨号中每个“连接”的名字?

问题二: 在DELPHI中如何检测到拨号已连接?(唉...RasEnumConnections 我总是用不对)

问题三: 用DELPHI如何断开网络连接?

请给我EMAIL: topic@pub.xaonline.com

谢谢!!!!!!!!!!!!!!
 
if anyone have key of this problem,give me a copy too.
thank you.
mailto:mischa@citiz.net
 
I need this too
 
对于问题一,可以从注册表中读取的,HKEY_CURRENT_USER/RemoteAccess/Profile/下,
看一看就明白的。
 
读取系统地址簿
function RasEnumEntries(resered: PAnsiChar; lpszPhoneBook: PAnsiChar;
entrynamesArray: LPRasEntryName; var lpcb: LongInt;
var lpcEntries: LongInt): LongInt; stdcall;

如 RasEnumEntries(nil, nil, @Entries[1], Size, EntriesNum)
前两个参数Win98不用,
Entries:Array[1..100] of TRasEntryName 指向存放连接信息的缓冲区
Entries[1].dwSize := SizeOf(TRasEntryName)
Size := SizeOf(TRasEntryName) * 100; 缓冲区大小
EntriesNum 返回实际读取连接数

检查连接(Win32API,没有转化为DELPHI)
DWORD RasGetConnectStatus(HRASCONN hrasconn,LPRASCONNSTATUS lprasconnstatus);
hrasconn为RasDial中的hRas连接句柄
lprasconnstatus为结构指针
typedef struct _RASCONNSTATUS {
DWORD dwSize;
RASCONNSTATE rasconnstate;
DWORD dwError;
TCHAR szDeviceType[RAS_MaxDeviceType + 1];
TCHAR szDeviceName[RAS_MaxDeviceName + 1];
} RASCONNSTATUS;
其中rasconnstate为RASCS_Connected或RASCS_Disconnected

断开拨号用
RasHangUp(hRas)
由于不能马上完成,用RasGetConnectStatus(hRas, Status)=ERROR_INVALID_HANDLE
Status为结构TRasConnStatus
Status.dwSize = SizeOf(TRasConnStatus)

建立和断开对话框网络连接
建立
WNetConnectionDialog(Handle, RESOURCETYPE_DISK);
断开
WNetDisconnectDialog(Handle, RESOURCETYPE_DISK);

建立和断开网络连接
建立
function WNetAddConnection2(var lpNetResource: TNETRESOURCE;
lpPassword: LPCSTR;
lpUserName: LPCSTR;
dwFlags: DWORD); DWORD; stdcall;
断开
function WNetCancelConnection2(lpName: LPCSTR; dwFlag: DWORD;
fForce: Boolean): DWORD; stdcall;

 
试试 yobbo
 
呵呵 我有一个例子 用于连接远程ras服务器的
想要给我发email :aawb@263.net :)
 
多人接受答案了。
 
后退
顶部