|
Comanche
|
|
Нужен не тормозной способ определения коннекта к Сети01.02.2011, 18:14. Показов 1598. Ответов 12
Метки нет (Все метки)
Сказать, что тема избитая - не сказать ничего
)Есть три способа: 1. Через АПИ RASEnum.... - приемлемо только для dial-up 2. Через АПИ GetConnectedState (или что-то в этом роде) - скажет, что вы в Сети, даже если вы просто в локалке 3. Через АПИ-функции из wininet.dll (попытка открыть любой корректный URL) - тупит по-страшному. Короче говоря, ни одного нормального способа ( Последний - самый надёжный в плане результата: если пинговать Yahoo, то т.к. эта служба никогда не 'падает' (по кр. мере верим в это), то мы точно (99.9%) будем знать - в Сети мы или нет. Только вот если в программе делать такую проверочку из АПИ-таймера, скажем раз в 5-10 секунд, то если ничего в программе в этот момент не делать, то можно жить, - а вот если момент проверки коннекта попадёт на открытие popup-меню, то у меня даже Win2000 пишет, что 'Программа не отвечает'!!! ну а менюха 'замораживается'... есть и другие похожие бяки.Выносить в отдельный поток? (так руки и не дошли до этого; на VBNET.RU, кстати, все почему-то очень ругали использование CreateThread под VB...) Выносить в отдельный EXE-шник (на худой конец)? который бы жил сам по себе, просто результат проверки через SendMessage периодически пулял бы в главное окно. Ещё как? Главное - чтоб не 'тупило'. |
|
| 01.02.2011, 18:14 | |
|
Ответы с готовыми решениями:
12
Как заходить по локальной сети с мтс коннекта? Способ определения языка текущего пользователя. Универсальный способ определения расположения пользовательских папок |
|
Messir
|
|
| 02.02.2011, 01:09 | |
|
пингами попробуй
|
|
|
Comanche
|
|
| 02.02.2011, 10:58 | |
|
Ты имеешь в виду 'ping http://xxxxx.xxx.xx > D:output.txt',
а потом смотреть, чё в txt-шнике? |
|
|
Comanche
|
||||||
| 02.02.2011, 12:53 | ||||||
|
В общем, сделал через внешний EXE-шник. Если кому интересно - вот код проекта этого EXE-шника:
|
||||||
|
Comanche
|
|
| 02.02.2011, 12:58 | |
|
Кстати, в процедуре TimerProc, после SendMessage и WriteStatusText, не помешает добавить вызов 'RedrawWindow CLng(params(0)), .....', чтобы обновить статус-бар.
|
|
|
Comanche
|
|
| 02.02.2011, 13:18 | |
|
Однако, выявился неприятный эффект: текст, установленный в бэйсиковском статус-баре через SendMessage, исчезает при WM_PAINT
( т.е. если форму основного проекта чуть-чуть двинуть, то в панели слово 'Он-лайн' (ну или 'Офф-лайн') пропадёт до следующего цикла таймера... придётся искать решение этой бяки.
|
|
|
Comanche
|
|
| 02.02.2011, 14:34 | |
|
В общем, плюнул и переделал всё через DDE. Получилось в два раза компактнее, и никаких проблем с перерисовкой статус-бара: основной проект выступает в роли DDE-сервера и ловит строковые сообщения от DDE-клиента, который проверяет в таймере коннект к Сети и через LinkExecute отправляет серверу либо '0', либо '1'. А уж основной проект - получив эту строку от клиента - прописывает соотв. текст в панель собственного статус-бара без всяких SendMessage.
Единственное, что непонятно, - это то, что строка доходит от клиента к серверу в исковерканном виде: после нолика (или единички) идут 2-3 каких-то нечитаемых символа, и приходится их отсекать... |
|
|
0 / 0 / 1
Регистрация: 09.01.2011
Сообщений: 47
|
|
| 02.02.2011, 15:10 | |
|
Доброго всем времени суток !
Есть еще один вариант - через Winsock. P.S. 'После очередной депрессии , космонавт Джонсон решил повеситься, но тут наступила невесомоть ...'
0
|
|
|
Comanche
|
|
| 02.02.2011, 15:37 | |
|
Согласен. А что через него отправлять? HTTP GET? - тогда в буфер винсока полезет вся страница Yahoo, и это сожрёт столько же времени, что и InternetOpenURL из wininet.dll... я не сильный знаток HTTP, посему вопрос: что ещё вместо 'GET' можно послать по HTTP, чтобы быстро убедиться в доступности URL'а (т.е. в наличии коннекта)?!
|
|
|
Messir
|
|
| 02.02.2011, 15:42 | |
|
Ну, когда я говорил про пинги, я вообще-то имел в виду IcmpCreateFile/IcmpSendEcho/IcmpCloseHandle...
|
|
|
51 / 17 / 6
Регистрация: 18.05.2007
Сообщений: 1,322
|
|
| 02.02.2011, 16:49 | |
|
2Comanche: HEAD
0
|
|
|
Comanche
|
|
| 02.02.2011, 17:06 | |
|
СПАСИБО ВСЕМ!!!
Буду пробовать. |
|
|
Comanche
|
|
| 04.02.2011, 16:56 | |
|
2Messir:
остановился на твоём варианте: выигрыш в скорости - в 3 с лишним раза (если сравнивать с InternetOpenUrl). Ещё раз BIG THANX! |
|
| 04.02.2011, 16:56 | |
|
Помогаю со студенческими работами здесь
13
Быстрый способ определения цвета пиксела координатам x, y
Подскажите третий способ определения числа ребер графа Предложить иной способ определения того, попадает ли заданная точка в ромб способ определения текущего режима втавки/замены для редактирования текстового поля Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|