Мониторинг 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
также доступен для голосования)