1

我使用 RASDIAL 或 RASPHONE exe 创建了拨号连接。我希望我的应用程序监控已建立的连接,如果连接断开,我的应用程序应该退出。如何以编程方式管理这个?请建议我..

4

3 回答 3

1

用于接收有关 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 的句柄,您将收到来自机器上所有连接、断开连接和带宽添加/删除的事件。

于 2012-07-24T17:03:48.023 回答
1

我建议你使用一个线程来定期检查连接的状态。

这可以使用rasapi32.dll 中的RasEnumConnections来完成。此调用返回活动连接列表,然后您可以对其进行迭代以检查您打开的连接是否在其中。

于 2012-07-24T05:44:54.623 回答
0

lpvNotifierRadDial函数允许您传递一个RasDialFunc1将接收有关连接生命周期的通知事件。(RasGetConnectStatus也可用于轮询)

于 2012-07-24T09:22:04.360 回答