|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проверка интернет соединения
проверяю интерет соединения т.е. есть оно или нет. Вот как я это осуществляю:
Код:
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
|
||||
|
||||
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 05.10.2014 в 22:09. |
#3
|
||||
|
||||
не очень хороший способ. к примеру с 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
|
||||
|
||||
Если следовать логике до конца, то далее нужно использовать, к примеру, InternetCheckConnection, так как предыдущая функция не проверяет сам факт подключения.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
||||
|
||||
Код:
uses WinInet; function GetInternetConnectedState: Boolean; begin Result:=InternetCheckConnection('http://www.msftncsi.com/ncsi.txt', 1, 0); end; Пишу программы за еду. __________________ |
#6
|
||||
|
||||
Лучше всё же использовать обе функции в связке. А то может получиться, иногда, что InternetCheckConnection будет очень долго отрабатывать.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |