Newsgroup: it.comp.lang.delphi
Titolo: detecting adsl

Ciao, per verificare la presenza di una connessione ad internet uso il
seguente codice. Ma non funzione in caso di ADSL. Perche' ?
Qualcuno sa come sistemarlo ? Grazie in anticipo.
unit idetect;
interface
uses
dialogs,  Windows, WinInet;
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;
function inet_IsConnected: boolean;  overload;
function inet_IsConnected(var ConDes: TConDescriptions): boolean;
overload;
function inet_IsConnected(var ConDes: TConDescriptions; var sConName :
string): boolean;  overload;
implementation
uses
  Sysutils
  ,Forms
  ,TypInfo
  ,classes
  ;
const
  { these are already defined into WinInet.pas }
{  INTERNET_CONNECTION_MODEM           = 1;
  INTERNET_CONNECTION_LAN             = 2;
  INTERNET_CONNECTION_PROXY           = 4;
  INTERNET_CONNECTION_MODEM_BUSY      = 8;
  { from the W2K SDK }
  INTERNET_RAS_INSTALLED           =   16;
  INTERNET_CONNECTION_OFFLINE      =   32;
  INTERNET_CONNECTION_CONFIGURED   =   64;
const
  winetdll = 'wininet.dll';
{ from the W2K SDK }
function InternetGetConnectedStateEx(lpdwFlags: LPDWORD;
                                     lpszConnectionName: LPSTR;
                                     dwNameLen: DWORD;
                                     dwReserved: DWORD): BOOL;
                                     cdecl; external winetdll name
'InternetGetConnectedStateExA';
{----------------------------------------------------------------------------------
 Description    : detects an internet connection
 Error checking : ?
 Notes          : uses wininet.pas
 Author         : Theo Bebekis - 
beb...@otenet.gr
-----------------------------------------------------------------------------------}
function inet_IsConnected: boolean;
var
  dwConnectionTypes : DWORD;
begin
  dwConnectionTypes := 0;
  Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;
{----------------------------------------------------------------------------------
 Description    : detects an internet connection
                  returns the connection description into the ConDes
 Error checking : ?
 Notes          : uses wininet.pas
 Author         : Theo Bebekis - 
beb...@otenet.gr
-----------------------------------------------------------------------------------}
function inet_IsConnected(var ConDes: TConDescriptions): boolean;
var
  S : string;
begin
  Result := inet_IsConnected(ConDes, S);
end;
{----------------------------------------------------------------------------------
 Description    : detects an internet connection
                  returns the connection description into the ConDes
 Error checking : ?
 Notes          : uses Sysutils, wininet
 Author         : Theo Bebekis - 
beb...@otenet.gr
-----------------------------------------------------------------------------------}
function inet_IsConnected(var ConDes: TConDescriptions; var sConName :
string): boolean;
var
  dwConnectionTypes : DWORD;
  Buffer : array[0..MAX_PATH - 1] of char;
begin
  dwConnectionTypes := 0;
  Result := InternetGetConnectedStateEx(@dwConnectionTypes, Buffer,
Sizeof(Buffer)-1, 0);
  if Result then
    sConName := StrPas(Buffer);
  ConDes := [];
//  if dwConnectionTypes <> 0 then
//    IntToSet(ConDes, dwConnectionTypes );
  if ( (dwConnectionTypes and INTERNET_CONNECTION_CONFIGURED ) =
INTERNET_CONNECTION_CONFIGURED )  then  Include(ConDes,
cdConfigured  );
  if ( (dwConnectionTypes and INTERNET_CONNECTION_LAN        ) =
INTERNET_CONNECTION_LAN        )  then  Include(ConDes,
cdlan      );
  if ( (dwConnectionTypes and INTERNET_CONNECTION_MODEM      ) =
INTERNET_CONNECTION_MODEM      )  then  Include(ConDes,
cdmodem       );
  if ( (dwConnectionTypes and INTERNET_CONNECTION_OFFLINE    ) =
INTERNET_CONNECTION_OFFLINE    )  then  Include(ConDes,
cdoffline     );
  if ( (dwConnectionTypes and INTERNET_CONNECTION_PROXY      ) =
INTERNET_CONNECTION_PROXY      )  then  Include(ConDes,
cdUsesProxy   );
  if ( (dwConnectionTypes and INTERNET_RAS_INSTALLED         ) =
INTERNET_RAS_INSTALLED         )  then  Include(ConDes,
cdRasInstalled);
end;
end.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Se il problema sottostante non e' chiaro chiedete pure informazioni.
In particolare chi possiede un collegamento ADSL potrebbe fare 
due tre giri di test no ?


Non credi che:
a) il titolo del post sia fuori luogo?
Non credo che su questo NG ci sia qualcuno che durante la
giornata ha come compito esclusivo la risposta ai quesiti.
Come gia' detto altre volte, qui si mette in comune quel che si sa
senza alcun impegno, compreso quello della risposta.
Come me e te, altri hanno postato messaggi senza avere alcuna risposta
semplicemente xche evidentemente nessuno era in grado di dare 
una risposta. Se poi preferisci avere 5/6 risposte del tipo 
"spiacente non so aiutarti", il ng sarebbe ingolfato, non ti pare?
b) Non è detto che qualcuno qui abbia una linea ADSL
c) Qualcora ci fosse qualcuno che ha una linea ADSL non è detto
che abbia in questo particolare momento il tempo di fare il test.
Se hai i clienti che ti corrono dietro x le consegne, tutto il resto
passa in secondo piano.
Bye
AS
