<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=39470&amp;view=findpost&amp;p=255729</guid>
        <pubDate>Mon, 01 Dec 2003 18:38:46 +0000</pubDate>
        <title>Проверить соединение с интернет</title>
        <link>https://forum.sources.ru/index.php?showtopic=39470&amp;view=findpost&amp;p=255729</link>
        <description><![CDATA[Song: Часто приложению, которое работает в интернете, требуется знать, подключён пользователь к интернету или нет. Предлагаю Вам довольно гибкое решение этого вопроса.<br>
<br>
Для работы Вам необходимо импортировать функцию InetIsOffline из URL.DLL: <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Function InetIsOffline(Flag: Integer): Boolean; stdcall; external &#39;URL.DLL&#39;;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
а затем поместить в программу простой вызов функции для проверки статуса соединения: <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">IF InetIsOffline(0) then ShowMessage(&#39;This computer is not connected to Internet!&#39;) else</div><div class="code_line">&nbsp;ShowMessage(You are connected to Internet!&#39;);</div></ol></div></div></div></div><br>
Эта функция возвращает TRUE если соединение с интернетов отсутствует, или FALSE если соединение установлено. <br>
<br>
<strong class='tag-b'>Замечание</strong>: <br>
параметр Flag игнорируется, соответственно используем ноль. <br>
Эта DLL обычно проинсталлирована на большинстве компьютеров. Она также существует в Win98 либо поставляется с Internet Explorer 4 или выше, Office 97 и т.д.. <br>
Более подробно можно прочитать в MSDN. <br>
<br>
Оригинал: <a class='tag-url' href='http://msdn.microsoft.com/library/psdk/shellcc/shell/Functions/InetIsOffline.htm' target='_blank'>http://msdn.microsoft.com/library/psdk/she...etIsOffline.htm</a><br>
Автор: Vitaly Zayko (zayko@vitsoftware.com)<br>
Источник: <a class='tag-url' href='http://www.sources.ru/delphi/' target='_blank'>http://www.sources.ru/delphi/</a><br>
<br>
<strong class='tag-b'>Комментарий</strong> от Ефремова Александра (aleks@vilgus.kamchatka.ru):<br>
<br>
Зашел на официальный сайт Microsoft по MSDN где черным по белому написано, что функция эта выдает false не только, когда комп подключен к интернету, но и когда ЕЩЕ НЕ БЫЛО ПОПЫТОК подключения (or if no attempt has yet been made to connect to the Internet). Ну и скажите мне теперь, какой у этой функции тогда смысл ? Да, умом Microsoft не понять (к сожалению). Помогите найти нормальный способ проверки подключения к инет (online).<br>
<br>
<strong class='tag-b'><em class='tag-i'>Merlin</em></strong>: самым нормальны, мне кажется, пинговать какой-то адрес в интернете, лучше два :) но это тоже связано с проблемой, что может запускаться установка связи, когда не надо.<br>
<br>
<strong class='tag-b'>Комментарий</strong> от Dmitry Shkil (Mitya@bigmir.net) ShkilSoft<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">interface</div><div class="code_line">&nbsp;</div><div class="code_line">Uses &nbsp;Windows;</div><div class="code_line">&nbsp;</div><div class="code_line">{ Flags for InternetGetConnectedState }</div><div class="code_line">&nbsp;</div><div class="code_line">Const</div><div class="code_line">&nbsp;&nbsp;INTERNET_CONNECTION_MODEM &nbsp; &nbsp; &nbsp;= 1;</div><div class="code_line">&nbsp;&nbsp;INTERNET_CONNECTION_LAN &nbsp; &nbsp; &nbsp; &nbsp;= 2;</div><div class="code_line">&nbsp;&nbsp;INTERNET_CONNECTION_PROXY &nbsp; &nbsp; &nbsp;= 4;</div><div class="code_line">&nbsp;&nbsp;INTERNET_CONNECTION_MODEM_BUSY = 8;</div><div class="code_line">&nbsp;&nbsp;winetdll = &#39;wininet.dll&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">Function InternetGetConnectedState(lpdwFlags: LPDWORD; dwReserved: DWORD):BOOL; stdcall; external winetdll name &#39;InternetGetConnectedState&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">Function InternetConnected: Boolean;</div><div class="code_line">Var dwConnectionTypes: DWORD;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;&nbsp;dwConnectionTypes :=INTERNET_CONNECTION_MODEM +INTERNET_CONNECTION_LAN +INTRERNET_CONNECTION_PROXY;</div><div class="code_line">&nbsp;&nbsp;Result := InternetGetConnectedState(@dwConnectionTypes, 0);</div><div class="code_line">End;</div><div class="code_line">&nbsp;</div><div class="code_line">Хотя возможно через RAS API. Компоненты можно поискать на www.torry.net</div><div class="code_line">&nbsp;</div><div class="code_line">[i]Kondakov[/i] </div><div class="code_line">Я попробовал это на основе предложения Dmitriya Работает вроде. . Через Button &nbsp;or Activate</div><div class="code_line">&nbsp;</div><div class="code_line">unit Unit1;</div><div class="code_line">interface</div><div class="code_line">uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;</div><div class="code_line">&nbsp;</div><div class="code_line">Const IC_Modem=1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; IC_LAN= 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; IC_PROXY=3;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; IC_MODEM_BUSY=4;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; winetdll=&#39;wininet.dll&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">Type Form1 = class(TForm)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Button1: TButton;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; procedure CheckState(Sender: TObject);</div><div class="code_line">&nbsp;</div><div class="code_line">End;</div><div class="code_line">&nbsp;</div><div class="code_line">Var Form1: TForm1;</div><div class="code_line">&nbsp;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">Function InternetGetConnectedState(lpdwFlags:LPDWORD; dwReserved: DWORD): BOOLEAN; stdcall; external winetdll name &#39;InternetGetConnectedState&#39;;</div><div class="code_line">&nbsp;</div><div class="code_line">{$R *.DFM}</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.CheckState(Sender: TObject);</div><div class="code_line">Var dwConnectionTypes: DWORD;</div><div class="code_line">begin</div><div class="code_line">&nbsp;dwConnectionTypes:=IC_MODEM+IC_LAN+IC_PROXY;</div><div class="code_line">&nbsp;IF InternetGetConnectedState(@dwConnectionTypes,0) then ShowMessage(&#39;You are connected&#39;) else ShowMessage(&#39;No Connection&#39;);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">end.</div></ol></div></div></div></div><br>
<br>
<br>
<strong class='tag-b'>Комментарий</strong> от &quot;Vladimir Artemov&quot;<br>
Из MSDN:<br>
You cannot rely solely on the fact that InternetGetConnectedState returning TRUE means that you have a valid active Internet connection. It is impossible for InternetGetConnectedState to determine if the entire connection to the Internet is functioning without sending a request to a server. This is why you need to send a request to determine if you are really connected or not. You can be assured however that if InternetGetConnectedState returns TRUE, that attempting your connection will NOT cause you to be prompted to connect to the default Internet Service Provider.<br>
Ну не получится таким образом ДОСТОВЕРНО проверить&#33; Надо либо подключаться, либо пинговать. <br>
<br>
Источник - FAQ сайта <a class='tag-url' href='http://delphi.mastak.ru' target='_blank'>http://delphi.mastak.ru</a><br>
<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green"><span class="tag-font" data-value="Arial" style="font-family:Arial"><span class='tag-size' data-value='8' style='font-size:8pt;'>Тема - элемент ЧАВО. Подготовлена by © Song</span></span></span>]]></description>
        <author>Song</author>
        <category>Интернет, сети, протоколы</category>
      </item>
	
      </channel>
      </rss>
	