Форум: "Сети";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
Вниз"ТИХАЯ" проверка коннекта Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.036 c