Уведомление о состоянии соединения по локальной сети

Тема в разделе "WASM.WIN32", создана пользователем _Juicy, 29 мар 2006.

  1. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Пишу приложение, которое должно мониторить состояние соединения. Вроде иконки эксплорера в панели задач (Local Area Connection is now connected, A network cable is unplugged и т.п.).

    Ковыряю пока netshell.dll, насколько стало пока понятно, дело там упирается в нигде не описанный IConnectionNotifySink, DCOM.

    Но может есть где что попроще и документированное?
     
  2. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
  3. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    KiNDeR

    Сложно сказать. У меня эта программка выводит абсолютно пустой месседж бокс.

    Но насколько я могу судить по коду, программка сама проверяет, есть ли соединение с интернетом. Мне же нужно, чтобы кто-то отправлял уведомление моей программе, если изменится состояние соединения по локальной сети (например, вытащат сетевой шнур).
     
  4. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    ну дык, есть ли связь в внешним миром, можно проверить примерно так:
    Код (Text):
    1.  
    2.           @@:
    3.           ; Проверяем, имеется или удаленное соединение
    4.           @call   [IsNetworkAlive],n_a_state
    5.           or      eax,eax
    6.           jnz     @F
    7.           ; Если соединения нет, ждем 1000 мс и повторяем проверку
    8.           @call   [Sleep],1000
    9.           jmp     @B
    10.           @@:
    11. ...
    12. ...
    13.  n_a_state    dd 2
    14.  


    эта функция сидит в SENSAPI.DLL, обратную проверку ясно как сделать...

    Если я конечно правильно вопрос понял
     
  5. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Как-то плохо я объясняю :dntknw:

    Берем Виндовз ХР. Если комп подключен к локальной сети, то в трее виден значок, изображающий два периодически мигающих монитора. Если вынуть кабель, он превратится в монитор с красным крестиком. Если умрет дхцп, то в монитор с желтым восклицательным знаком. При этом процесс, который выводит иконку (это explorer.exe), не проверяет периодически состояние соединения, а получает уведомления, от кого - пока понять не могу.

    Хочется реализовать ту же самую функциональность.
     
  6. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    а бряк на Shell_NotifyIcon, и выдергивание сетевого кабеля, не прояснит ситуацию??? :)))
     
  7. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    См. первый пост.
     
  8. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    ну тогда прямая дорога тебе в исходниках винды зарыться... :))
     
  9. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Ну как всегда :'(
     
  10. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Наверняка комп имеет имя, если попробовать напрограммить ping имя_компа?
     
  11. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    EvilsInterrupt

    Эээ... Или мысль столь мудра, что я не могу врубиться, или это не совсем то, что нужно.
     
  12. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Squash

    Ну да мудра? :)

    К примеру ты в локали есть там комп с именем: Squash

    Так сделай из смд:

    ping Squash

    тебе будет ответ, доступен или нет! Раз через смд можно, значит и через АПИ! А имя компа, где щас находишься узнать тоже можно через апи, в статья куча примеров



    Или это не то?
     
  13. khv_test

    khv_test New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    135
    В аттаче пример работы с теми иконками, блокирует их мигание.

    исследовал пару месяцев назад...

    [​IMG] _1445947205__netshell_notify.zip
     
  14. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    khv_test

    Все трояны пишешь? :)

    Мне, к сожалению, копать нужно в другую сторону. Определять состояние соединения, отлавливая оконные сообщения - это как-то через... аварийный выход.
     
  15. Max

    Max Member

    Публикаций:
    0
    Регистрация:
    22 май 2003
    Сообщения:
    192
    Squash

    это называется "media sense", дальше гугл + мсдн ;)