C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Глюки 98-ых Виндов при использовании..., ... функции InternetGetConnectedState
R@kot
  Отправлено: 07.01.2005, 02:07


Дежурный стрелочник

Группа: Участник
Сообщений: 32



Ребят, вот какая проблема: в проге нужно проверить имеется ли в данный момент подключение к Internet. Как мне уже советовали, использую функцию InternetGetConnectedState:


CODE

#pragma link "wininet.lib"
//Проверка на наличие подключения к Internet
DWORD state1 = INTERNET_CONNECTION_MODEM;
DWORD state2 = INTERNET_CONNECTION_LAN;
DWORD state3 = INTERNET_CONNECTION_PROXY;
if (    !InternetGetConnectedState(&state1, 0) &&
       !InternetGetConnectedState(&state2, 0) &&
       !InternetGetConnectedState(&state3, 0)) {

       MessageBox(0,"Отсутствует подключение к Internet!\t","Ошибка", MB_ICONSTOP);
       return;
}


У меня стоит XP и всё работает нормально. НО! Стал проверять на 98-ых Виндах, а там какой-то глюк: на компе вообще нет модема, а функция говорит, что подключение к Инету "присутствует" sad.gif

Или же ещё на одном компе (тоже с 98-ыми) — там модем хоть и стоит, но к Инету не подключался, а функция утверждает обратное. sad.gif


Кстати, при проверке на 2000-ом всё работает правильно.

Подскажите, как можно исправить это в 98-ых или может быть есть ещё какой-нибудь способ проверить на подключение?

Пожалуйста, кому не лень! smile.gif
Георгий
Отправлено: 07.01.2005, 03:45


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



знаешь, сам никогда этими функциями не пользовался, но сделав поиск по форуму нашёл вот такое:
https://rxlib.ru/forums/index.php?ac...72501c0739598da
QUOTE

QUOTE

GEDEON:
Как я понял из вопроса возникла необходимость проверять есть ли связь с Internat, так вот столкнувшись с этим вопросом и перерыв кучу инфы пришел к выводу, что наилучший способ для этого использовать функцию InternetCheckConnection() из библиотеки wininet.lib правда из Psdk. Подробности о ней можно почитать в MSDN. А вот кусок кода который я использую для проверки, работает наиболее правдиво из всего, что я перепробовал:

CODE

#include //взят из SDK
#pragma comment(lib, "C:\Program Files\Borland\CBuilder6\Lib\Psdk\wininet.lib")

bool OnLine = false;
DWORD state = FLAG_ICC_FORCE_CONNECTION;
OnLine = InternetCheckConnection (NULL,state,0);

QUOTE

Первый параметр может быть конкретный адрес, а если так то он проверяет связь с каким-то быстрым Мелкомягким сервером.


Отредактировано Георгий — 07/01/2005, 04:51
Gedeon
Отправлено: 11.01.2005, 13:21


Ветеран

Группа: Модератор
Сообщений: 1742



Там вообще говоря песня гораздо веселее, действительно поищите по форуму, есть особенности, при разных подключениях, мы уже обсуждали это раньше, ну а если не получится, тогда еще пообсуждаем smile.gif .

Вернуться в Вопросы программирования в C++Builder