Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.10.2014, 20:53
HTTqp HTTqp вне форума
Новичок
 
Регистрация: 16.04.2014
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: -25
По умолчанию Проверка интернет соединения

проверяю интерет соединения т.е. есть оно или нет. Вот как я это осуществляю:

Код:
const  
 INTERNET_CONNECTION_MODEM      = 1;  
 INTERNET_CONNECTION_LAN        = 2;  
 INTERNET_CONNECTION_PROXY      = 4;  
 INTERNET_CONNECTION_MODEM_BUSY = 8;

function IsInternetConnected: Boolean;
var  
 dwConnectionTypes: DWORD;
begin 
 dwConnectionTypes := INTERNET_CONNECTION_MODEM or 
                      INTERNET_CONNECTION_LAN or 
                      INTERNET_CONNECTION_PROXY;  
 Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if IsInternetConnected then  Label1.Caption:='1' else Label1.Caption:='0';
end;

но уменя всегда получается так как будто соединение все есть, вне зависимости от того включу я инет или нет. Интересует проверка через api без использования так сказать проверки в виде
Код:
HTTP.Get('http://ya.ru');
даже не интересует.
Ответить с цитированием
  #2  
Старый 05.10.2014, 22:06
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Сообщение от HTTqp
так сказать проверки в виде
HTTP.Get('http://ya.ru');
даже не интересует.
При этом сама винда приблизительно так и проверяет подключение. Только не ya.ru, а специально для этого созданная мелкомягкая страничка.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 05.10.2014 в 22:09.
Ответить с цитированием
  #3  
Старый 06.10.2014, 18:41
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

не очень хороший способ. к примеру с ADSL модемом, при выдергивании телефонного провода из него все-равно возвращает true и флаги INTERNET_CONNECTION_LAN | INTERNET_RAS_INSTALLED. тоже самое и при наличии интернета. кста параметр lpdwFlags [out], его нужно проверять после вызова функции, а не устанавливать перед вызовом. через http://www.msftncsi.com/ncsi.txt надежнее, как это делает Windows 7.

Код:
var
  dwFlags: DWORD;
begin
  dwFlags:=0;
  if InternetGetConnectedState(@dwFlags, 0) then ShowMessage('Ok') else ShowMessage('Oops');
  Edit1.Text:=IntToHex(dwFlags, 8);
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 07.10.2014, 05:52
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Если следовать логике до конца, то далее нужно использовать, к примеру, InternetCheckConnection, так как предыдущая функция не проверяет сам факт подключения.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 07.10.2014, 17:55
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
uses
  WinInet;

function GetInternetConnectedState: Boolean;
begin
  Result:=InternetCheckConnection('http://www.msftncsi.com/ncsi.txt', 1, 0);
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 07.10.2014, 22:37
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Лучше всё же использовать обе функции в связке. А то может получиться, иногда, что InternetCheckConnection будет очень долго отрабатывать.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:58.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter