![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
Цитата:
Только не ya.ru, а специально для этого созданная мелкомягкая страничка.Последний раз редактировалось 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, так как предыдущая функция не проверяет сам факт подключения.
|
|
#5
|
||||
|
||||
|
Код:
uses
WinInet;
function GetInternetConnectedState: Boolean;
begin
Result:=InternetCheckConnection('http://www.msftncsi.com/ncsi.txt', 1, 0);
end; |
|
#6
|
||||
|
||||
|
Лучше всё же использовать обе функции в связке. А то может получиться, иногда, что InternetCheckConnection будет очень долго отрабатывать.
|