Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

"ТИХАЯ" проверка коннекта   Найти похожие ветки 

 
maxistent ©   (2004-09-16 11:05) [0]

Дарова, человеки!!! Буду чрезмерно рад, если Вы поможете с вопросом: как можно "ТИХО" (без лишнего шума и пыли) проверить коннект с ИНЕТОМ? Т.е. прога не должна задавать НИКАКИХ вопросов! Просто проверить - есть коннект, значит есть, нет - значит нет. ???


 
Digitman ©   (2004-09-16 13:50) [1]


> коннект с ИНЕТОМ


коннекта с "ИНЕТОМ" быть не может потому что его не может быть по определению


 
maxistent ©   (2004-09-17 20:24) [2]

Смешно! Ладно, расслабьтесь. Я уже нашел ответ. Вродь подходит...


 
Verg ©   (2004-09-17 20:43) [3]


> расслабьтесь


:)))


 
Anatoly Podgoretsky ©   (2004-09-19 11:57) [4]

maxistent ©   (17.09.04 20:24) [2]
Врешь


 
RaPToR_1   (2004-09-19 21:46) [5]

Удалено модератором
Примечание: Оффтоп...


 
Digitman ©   (2004-09-20 10:47) [6]


> maxistent ©   (17.09.04 20:24) [2]
> Смешно! ... Я уже нашел ответ


смешно, что ты нашел ответ, которого быть не может в принципе
Интернет - это сеть сетей, с сетью коннекта не может быть, коннект устанавливается с КОНКРЕТНЫМ компьютером в той или иной сети, например, с компьютером, выполняющим поль сервера удал.доступа в сети провайдера

и установка коннекта твоего компьютера с компьютером-сервером доступа провайдера отнюдь не означает, что твой компьютер имеет "коннект с ИНЕТ"


 
Samowar ©   (2004-09-21 03:38) [7]

> выполняющим поль сервера удал.доступа

Про какую ПОЛЬ ты говориш? Если ты имел ввиду моль, то она живёт в твоём шкафу и уже доедает твою шубу и ничего общего с коннектом не имеет.

Давненько я небыл на этом сайте, вижу на вопросы совсем разучились отвечать, зато как остроумно до слов придераться стали.

Часто приложению, которое работает в интернете, требуется знать, подключён пользователь к интернету или нет. Предлагаю Вам довольно гибкое решение этого вопроса.

Совместимость: Delphi 3.x (или выше)

Для работы Вам необходимо импортировать функцию 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!");

Эта функция возвращает TRUE если соединение с интернетов отсутствует, или FALSE если соединение установлено.

Замечание:
параметр Flag игнорируется, соответственно используем ноль.
Эта DLL обычно проинсталлирована на большинстве компьютеров. Она также существует в Win98 либо поставляется с Internet Explorer 4 или выше, Office 97 и т.д..
Более подробно можно прочитать в MSDN. Оригинал: http://msdn.microsoft.com/library/psdk/shellcc/shell/Functions/InetIsOffline.htm

Автор ответа: Vitaly Zayko
Взято с Исходников.ru http://www.sources.ru/delphi_src1.shtml

----------------------------------------------------------------

interface  

uses  
 Windows, SysUtils, Registry, WinSock, WinInet;  

type  
 TConnectionType = (ctNone, ctProxy, ctDialup);  

function ConnectedToInternet: TConnectionType;  
function RasConnectionCount: Integer;  

implementation  

//For RasConnectionCount =======================  
const  
 cERROR_BUFFER_TOO_SMALL = 603;  
 cRAS_MaxEntryName       = 256;  
 cRAS_MaxDeviceName      = 128;  
 cRAS_MaxDeviceType      = 16;  
type  
 ERasError = class(Exception);  

 HRASConn = DWORD;  
 PRASConn = ^TRASConn;  
 TRASConn = record  
   dwSize: DWORD;  
   rasConn: HRASConn;  
   szEntryName: array[0..cRAS_MaxEntryName] of Char;  
   szDeviceType: array[0..cRAS_MaxDeviceType] of Char;  
   szDeviceName: array [0..cRAS_MaxDeviceName] of Char;  
 end;  

 TRasEnumConnections =  
   function(RASConn: PrasConn; { buffer to receive Connections data }  
   var BufSize: DWORD;    { size in bytes of buffer }  
   var Connections: DWORD { number of Connections written to buffer }  
   ): Longint;  
 stdcall;  
 //End RasConnectionCount =======================  

function ConnectedToInternet: TConnectionType;  
var  
 Reg:       TRegistry;  
 bUseProxy: Boolean;  
 UseProxy:  LongWord;  
begin  
 Result := ctNone;  
 Reg    := TRegistry.Create;  
 with REG do  
   try  
     try  
       RootKey := HKEY_CURRENT_USER;  
       if OpenKey("\Software\Microsoft\Windows\CurrentVersion\Internet settings", False) then  
       begin  
         //I just try to read it, and trap an exception  
         if GetDataType("ProxyEnable") = rdBinary then  
           ReadBinaryData("ProxyEnable", UseProxy, SizeOf(Longword))  
         else  
         begin  
           bUseProxy := ReadBool("ProxyEnable");  
           if bUseProxy then  
             UseProxy := 1  
           else  
             UseProxy := 0;  
         end;  
         if (UseProxy <> 0) and (ReadString("ProxyServer") <> "") then  
           Result := ctProxy;  
       end;  
     except  
       //Obviously not connected through a proxy  
     end;  
   finally  
     Free;  
   end;  

 //We can check RasConnectionCount even if dialup networking is not installed  
 //simply because it will return 0 if the DLL is not found.  
 if Result = ctNone then  
 begin  
   if RasConnectionCount > 0 then Result := ctDialup;  
 end;  
end;  

function RasConnectionCount: Integer;  
var  
 RasDLL:    HInst;  
 Conns:     array[1..4] of TRasConn;  
 RasEnums:  TRasEnumConnections;  
 BufSize:   DWORD;  
 NumConns:  DWORD;  
 RasResult: Longint;  
begin  
 Result := 0;  

 //Load the RAS DLL  
 RasDLL := LoadLibrary("rasapi32.dll");  
 if RasDLL = 0 then Exit;  

 try  
   RasEnums := GetProcAddress(RasDLL, "RasEnumConnectionsA");  
   if @RasEnums = nil then  
     raise ERasError.Create("RasEnumConnectionsA not found in rasapi32.dll");  

   Conns[1].dwSize := SizeOf(Conns[1]);  
   BufSize         := SizeOf(Conns);  

   RasResult := RasEnums(@Conns, BufSize, NumConns);  

   if (RasResult = 0) or (Result = cERROR_BUFFER_TOO_SMALL) then Result := NumConns;  
 finally  
   FreeLibrary(RasDLL);  
 end;  
end;

Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php


 
Reindeer Moss Eater ©   (2004-09-21 08:36) [8]

Чушь какая.
Установил сейчас соединение с домашним компьютером и мне эта чушь сказала, что я "соединился с интернет".


 
Digitman ©   (2004-09-21 13:22) [9]


> Samowar ©   (21.09.04 03:38) [7]


> Про какую ПОЛЬ ты говориш? Если ты имел ввиду моль, то


слушай-ка, клоун, ты очевидно попросту не понимаешь, что некое удаленное соединение с неким компьютером не обязательно есть соединение с компьютером инет-провайдера...

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


 
maxistent ©   (2004-09-21 17:02) [10]

Ну Вы ещё подеритесь, горячие финские парни! Я ж сказал: РАССЛАБЬТЕСЬ!!! :)



Страницы: 1 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.024 c
6-1095591217
Biatri$
2004-09-19 14:53
2004.11.28
Хедер (рапер) для dnsapi.dll


3-1099046770
Dmit
2004-10-29 14:46
2004.11.28
заполнение основной таблицы, через справочную.


11-1083335243
RTWolf
2004-04-30 18:27
2004.11.28
Как проверить создан ли объект (например форма)?


14-1100242672
MBo
2004-11-12 09:57
2004.11.28
Пятница - новые похождения Васи Пупкина и другие задачки ;)


1-1100245698
Unknown user
2004-11-12 10:48
2004.11.28
Копирование значений свойств из одного объекта в другой