Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определение включенности интернета [D7, XP]


Фоофа ©   (2008-09-22 17:04:00) 

Подскажте пожалса, как в делфи(как нистранно именно в нем Оо) написать опознование включенности интернета, заранее спс.


antonn   (2008-09-24 08:54:00) [1]


> brother ©   (24.09.08 04:12) [18]
>
> зы и келпает очередного трояна(

у вас плохой телепатор, было неоднократно замечено.


brother   (2008-09-24 04:12:00) [2]

думаю, что автору [14] хватило вполне...
зы и келпает очередного трояна(


Германн   (2008-09-24 01:48:00) [3]


> antonn ©   (24.09.08 01:37) [16]
>
>
> > А один из авторов статьи упорно "молчит в тряпочку". :
> )
>
> разве он не сказал - "никак"? :)

Сказал. А потом "замолчал в тряпочку". :)


antonn   (2008-09-24 01:37:00) [4]


> А один из авторов статьи упорно "молчит в тряпочку". :)

разве он не сказал - "никак"? :)


Германн   (2008-09-24 01:22:00) [5]


> Anatoly Podgoretsky ©   (22.09.08 21:19) [13]
>
> > Германн  (22.09.2008 21:13:12)  [12]
>
> Да ладно, это не так и важно и то что написано имеет право
> и вполне применимо.
>

А один из авторов статьи упорно "молчит в тряпочку". :)


JJ   (2008-09-23 05:01:00) [6]

Люди не хотят учиться говорить по русски, вот и не могут составить правильно свой запрос. А уж сил забить его в Яндекс у них не остаётся :)

Автору этого хватит выше крыши, пусть пробует всё что можно и экспериментирует:

Для работы Вам необходимо импортировать функцию InetIsOffline из URL.DLL:

function InetIsOffline(Flag: Integer): Boolean;
stdcall; external 'URL.DLL';

а затем поместить в программу простой вызов функции для проверки статуса соединения:

if InetIsOffline(0) then
 ShowMessage('This computer is not connected to Internet!')
else
 ShowMessage('You are connected to Internet!');

но ещё нужно учитывать, что функция эта выдает false не только, когда комп подключен к Интернету, но и когда ЕЩЕ НЕ БЫЛО ПОПЫТОК подключения (or if no attempt has yet been made to connect to the Internet), как сказано в официальной документации Microsoft по MSDN...

Да, умом Microsoft не понять!


- - -

const INTERNET_CONNECTION_MODEM = 1;
     INTERNET_CONNECTION_LAN   = 2;
     INTERNET_CONNECTdState';

{$R *.DFM}

procedure TForm1.CheckState(Sender: TObject);
var
 dwConnectionTypes: DWORD;
begin
 dwConnectionTypes:=IC_MODEM+IC_LAN+IC_PROXY;
 if InternetGetConnectedState(@dwConnectionTypes,0) then
   ShowMessage('You connected')
 else
   ShowMessage('No Connection');
end;


- - -

{Static linking. }

uses
  WinInet;

{...}

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

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsConnectedToInternet then
    ShowMessage('Connected.')
  else
    ShowMessage('Not Connected.')
end;


- - -

{Dynamic linking. }

function IsConnectedToInternet(lpdwFlags: LPDWORD): Boolean;
const
  WininetDLL = 'wininet.dll';
var
  hWininetDLL: THandle;
  dwReserved: DWORD;
  fn_InternetGetConnectedState: function(lpdwFlags: LPDWORD; dwReserved: DWORD): BOOL; stdcall;
begin
  Result := False;
  dwReserved := 0;
  hWininetDLL := LoadLibrary(WininetDLL);
  if hWininetDLL > 0 then
  begin
    @fn_InternetGetConnectedState := GetProcAddress(hWininetDLL,'InternetGetConnectedState');
    if Assigned(fn_InternetGetConnectedState) then
    begin
      Result := fn_InternetGetConnectedState(lpdwFlags, dwReserved);
    end;
    FreeLibrary(hWininetDLL);
  end else
   raise Exception.Create('Unable to locate function InternetGetConnectedState in library ' + WininetDLL);

end;

procedure TForm1.Button1Click(Sender: TObject);
const
  INTERNET_CONNECTION_MODEM = 1;
  INTERNET_CONNECTION_LAN = 2;
  INTERNET_CONNECTION_PROXY = 4;
  INTERNET_CONNECTION_MODEM_BUSY = 8;
var
  dwConnectionTypes: DWORD;
begin
  dwConnectionTypes :=
    INTERNET_CONNECTION_MODEM +
    INTERNET_CONNECTION_LAN +
    INTERNET_CONNECTION_PROXY;
  if IsConnectedToInternet(@dwConnectionTypes) then
    ShowMessage('Connected.')
  else
    ShowMessage('Not Connected.')
end;


Anatoly Podgoretsky   (2008-09-22 21:19:00) [7]

> Германн  (22.09.2008 21:13:12)  [12]

Да ладно, это не так и важно и то что написано имеет право и вполне применимо.
Мне не нравится пункт 2, про первый с пингом я вообще не говорю.
Ну зачем использовать какой то сайт и прочее, обращаться надо именно к ресурсу.
А то толку, от тог, что page.html доступен, а мне то нужен page2.html
Надо просто не заморачиваться,  а прямо обращаться к нужному режиму, и именно когда он нужен, а не два дня до этого и обрабатывать ошибки.
Все больше ничего не надо. Другое дело трояны на диалапе, вот тем надо незаметно попытаться передать данные, а каналом они не рулят.


Германн   (2008-09-22 21:13:00) [8]


> Anatoly Podgoretsky ©   (22.09.08 20:59) [11]

А это не ко мне. Автор статьи где-то рядом :)


Anatoly Podgoretsky   (2008-09-22 20:59:00) [9]

> Германн  (22.09.2008 20:28:10)  [10]

> "А теперь - правда !"

Не правда, но направление к правде.


Германн   (2008-09-22 20:28:00) [10]

http://www.delphimaster.ru/articles/connect-inet.html


Leonid Troyanovsky   (2008-09-22 19:37:00) [11]


> Anatoly Podgoretsky ©   (22.09.08 18:54) [8]

> Что такое Интернет.

Это реальная виртуальность.

--
Regards, LVT.


Anatoly Podgoretsky   (2008-09-22 18:54:00) [12]

> Фоофа  (22.09.2008 17:04:00)  [0]

Что такое Интернет.


ПРавильный$Вася   (2008-09-22 18:17:00) [13]


> даже обратной ссылки на возвращение

боишься заблудиться?


Поросенок Винни-Пух   (2008-09-22 18:09:00) [14]

ну как это смысла нет?
вот выйдешь в инет без проверки его включенности - а там нет ничего.
даже обратной ссылки на возвращение.


KilkennyCat   (2008-09-22 18:01:00) [15]


> разве токльо погадать попытками подключиться к какому-нибудь
> яндексу

нафига к яндексу, программулина же не просто наверное, выводит сообщение о есть-нет интернет. Пущай и коннектится туда, куда надо сразу.
И смысл в вопросе тут же отпадает.
Но все равно смысла в программе нет.
Потому чито с ошибками будет.


clickmaker   (2008-09-22 17:21:00) [16]

можно, разве что, проверить, есть ли в данный момент доступ к инету, функцией InternetAttemptConnect
Она еще может вывести диалог дозвона, если диалап


Правильный$Вася   (2008-09-22 17:18:00) [17]

если речь идет о сетевом подключении, конкретном, то можно проверить его наличие
но является ли это подключение выходом в интернет - разве токльо погадать попытками подключиться к какому-нибудь яндексу


Сергей М.   (2008-09-22 17:07:00) [18]

Никак.
Интеренет всегда "включен", вне зависимости от того странно тебе или нистранно. хочешь ты того или нех хочешь)


Поросенок Винни-Пух   (2008-09-22 17:07:00) [19]

function IsInetOn : boolean;
begin
Result := True;
if not Result then Result := True;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо