我使用 RASDIAL 或 RASPHONE exe 创建了拨号连接。我希望我的应用程序监控已建立的连接,如果连接断开,我的应用程序应该退出。如何以编程方式管理这个?请建议我..
3 回答
用于接收有关 RAS 连接和断开连接的基于事件的通知的正确 Win32 API 是 RasConnectionNotification。
这是一个链接: http: //msdn.microsoft.com/en-us/library/aa376726 (VS.85).aspx
如果您在 CodePlex 上使用 DotRas SDK,RasConnectionWatcher 会使用上述 API 处理这些通知。
using DotRas;
RasConnectionWatcher watcher = new RasConnectionWatcher();
watcher.Connected += (sender, e) =>
{
// Connected!
};
watcher.Disconnected += (sender, e) =>
{
// Disconnected!
};
您还可以通过设置 Handle 属性指定从 RasDial 返回的句柄以接收特定于该句柄的事件。
watcher.Handle = handle;
watcher.EnableRaisingEvents = true;
如果您有兴趣,这里是 DotRas 的链接:http: //dotras.codeplex.com
编辑:我只是想补充一点,如果您没有指定 DotRas 或 Win32 API 的句柄,您将收到来自机器上所有连接、断开连接和带宽添加/删除的事件。
我建议你使用一个线程来定期检查连接的状态。
这可以使用rasapi32.dll 中的RasEnumConnections来完成。此调用返回活动连接列表,然后您可以对其进行迭代以检查您打开的连接是否在其中。
lpvNotifier
该RadDial
函数允许您传递一个RasDialFunc1
将接收有关连接生命周期的通知事件。(RasGetConnectStatus
也可用于轮询)