![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как понять я уже в инете или еще нет? [D6, WinXP]
FATman © (2002-08-27 23:02:00)Вобщем то субж. Как мне программно определить подключен ли я к инету или нет. если подключен то делаю то-то если нет то еще чего-нить делаю.
Заранее спасибо!
Reindeer Moss Eater (2002-08-28 07:57:00) [1]если подключен то делаю то-то если нет то еще чего-нить делаю.
Делай все наоборот. Если что-то получается делать - ты в инете. Если нет - нет. :)
Anatoly Podgoretsky (2002-08-28 01:09:00) [2]Правильно пинговать www.microsoft.com именно со смайликом
Ihor Osov'yak (2002-08-28 01:03:00) [3]А что такое инет? Поверь, однозначного ответа нет.
Пример - у твоего провайдера загнулся прокси или dns. Ты к нему получил коннект. Так вот вопрос - ты в инете или нет?
Более менее корректный способ - пропинговать (или попытатся подсоединится к удаленому постоянно работающему серверу, ну хотя бы www.microsoft.com) ...
Но это уже пункт 2. Для п1 можно воспользоватся этим:
type
TConDescription = ( cdModem, { Local system uses a modem to connect to the Internet }
cdLan, { Local system uses a local area network to connect to the Internet }
cdUsesProxy, { Local system uses a proxy server to connect to the Internet }
cdModemBusy, { not used }
cdRasInstalled, { Local system has RAS installed }
cdOffline, { Local system is in offline mode }
cdConfigured { Local system has a valid connection to the Internet,
but it may or may not be currently connected }
);
TConDescriptions = set of TConDescription;
const
winetdll = "wininet.dll";
{ from the W2K SDK }
function InternetGetConnectedStateEx(lpdwFlags: LPDWORD;
lpszConnectionName: LPSTR;
dwNameLen: DWORD;
dwReserved: DWORD): BOOL;
stdcall; external winetdll name "InternetGetConnectedStateExA";
function inet_IsConnected(var ConDes: TConDescriptions; var sConName : string): boolean;
var
dwCTp : DWORD;
Buffer : array[0..MAX_PATH - 1] of char;
begin
dwCTp := 0;
Result := InternetGetConnectedStateEx(@dwCTp, Buffer, Sizeof(Buffer)-1, 0);
if Result then sConName := StrPas(Buffer);
ConDes := [];
if ( (dwCTp and INTERNET_CONNECTION_CONFIGURED ) > 0 )
then Include(ConDes, cdConfigured );
if ( (dwCTp and INTERNET_CONNECTION_LAN ) > 0 )
then Include(ConDes,cdLan);
if ( (dwCTp and INTERNET_CONNECTION_MODEM ) > 0 )
then Include(ConDes, cdModem );
if ( (dwCTp and INTERNET_CONNECTION_OFFLINE ) > 0 )
then Include(ConDes,cdOffline );
if ( (dwCTp and INTERNET_CONNECTION_PROXY ) > 0 )
then Include(ConDes,cdUsesProxy );
if ( (dwCTp and INTERNET_RAS_INSTALLED ) > 0 )
then Include(ConDes,cdRasInstalled);
end;
Зы - если не ошибаюсь - InternetGetConnectedStateExA появляется при установке IE5.0 и выше ....
Если IE4 - юзай это
function inet_IsConnected: boolean;
var
dwConnectionTypes : DWORD;
begin
dwConnectionTypes := 0;
Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;