Мониторинг RAS Dial Dial из моего приложения с помощью API

Я создал соединение DialUp, используя RASDIAL или RASPHONE exe. Я хочу, чтобы мое приложение отслеживало установленное соединение, и, если соединение разрывается, мое приложение должно завершиться. Как управлять этим программно? Пожалуйста, предложите мне..

3 ответа

Я предлагаю вам использовать ветку, чтобы периодически проверять состояние соединения.

Это можно сделать с помощью RasEnumConnections из rasapi32.dll. Этот вызов возвращает список активных соединений, которые вы можете затем перебрать, чтобы проверить, есть ли среди них открытое вами.

Правильным Win32 API для получения уведомлений о событиях, касающихся подключений и отключений RAS, является RasConnectionNotification.

Вот ссылка: http://msdn.microsoft.com/en-us/library/aa376726(VS.85).aspx

Если вы используете DotRas SDK в CodePlex, RasConnectionWatcher обрабатывает эти уведомления с помощью вышеупомянутого API.

using DotRas;

RasConnectionWatcher watcher = new RasConnectionWatcher();
watcher.Connected += (sender, e) => 
    { 
        // Connected! 
    };
watcher.Disconnected += (sender, e) => 
    { 
        // Disconnected! 
    };

Вы также можете указать дескриптор, возвращаемый из RasDial для получения событий, специфичных для этого дескриптора, установив свойство Handle.

watcher.Handle = handle;
watcher.EnableRaisingEvents = true;

Вот ссылка на DotRas, если вы заинтересованы: http://dotras.codeplex.com/

Изменить: я просто хотел добавить, что если вы не укажете дескриптор API-интерфейса DotRas или Win32, вы будете получать события от всех подключений, отключений и пропускной способности, добавленной / удаленной на машине.

lpvNotifier из RadDial Функция позволяет передать RasDialFunc1 который будет получать уведомления о событиях, связанных с временем жизни соединения. (RasGetConnectStatus также доступен для голосования)

Другие вопросы по тегам