Newsgroup: it.comp.lang.c++
Titolo: Come testare se Accesso Remoto è in connessione

Ciao,
Vorrei sapere se esiste un metodo per controllare lo stato di accesso
remoto.
L'obbiettivo è di evitare che un controllo di un sito internet causi la
connessione
automatica ad accesso remoto.
Grazie.
-- 
-------------------------------------------------------
Rimuovere <NSPW> per inviare Mail

Io ho fatto nel modo che segue. La variabile m_Status e' un membro di una
mia classe. Adattala al tuo scopo.
IsConnected(LPCSTR entryName)
{
 int result = 0;
 LPRASCONN connList;
 connList = new RASCONN[MAX_CONNECTIONS];
 if (connList == NULL)
     m_status = RAS_ERROR;
 else
 {
  HRASCONN h = NULL;
  connList[0].dwSize = sizeof(RASCONN);
  DWORD size, n;
  size = sizeof(RASENTRYNAME) * MAX_CONNECTIONS;
  DWORD rc = RasEnumConnections(connList, &size, &n);
  if (!rc)
  {
   for (int i = 0; i < int(n); i++)
   {
    // Cerca la nostra connessione
    if (!stricmp(connList[i].szEntryName, entryName))
     h = connList[i].hrasconn;
   }
  }
  delete [] connList;
  // Trovata connessione
  if (h != NULL)
  {
   m_Status = RAS_ON;
   result = 1;
  }
 }
 return result;
}
--
Antonio Donatiello

 remoto.
    RASCONN rasconAr[5];
    DWORD nConnection = 0, i, bufferSize = sizeof rasconAr;
    rasconAr[0].dwSize = sizeof rasconAr[0];
    if( RasEnumConnections( rasconAr, &bufferSize, &nConnection ) ) 
      ChangeRasState( RAS_OFF );
    else {
      BOOL flag = FALSE;
      for( i=0; i<nConnection; i++ )
	if( !stricmp( rasconAr[i].szEntryName, NOME_CONNESSIONE ) )
	  flag = TRUE; // cosě controlli una particolare connessione
      if( nConnection > 0 ) { // c'č almeno una connesione attiva
	RASCONNSTATUS rcs;
	rcs.dwSize = sizeof rcs;
	m_hRascon = rasconAr[0].hrasconn;
	RasGetConnectStatus( m_hRascon, &rcs );
    switch( rcs ) {
    case RASCS_OpenPort:		ChangeRasState( RAS_DIALING );
break;	    
    case RASCS_PortOpened: 
    case RASCS_ConnectDevice:		break;
    case RASCS_DeviceConnected:	  	m_StatoRAS.SetWindowText(
"Connected with server" ); 
					break;		
    case RASCS_AllDevicesConnected:	break;
    case RASCS_Authenticate:		m_StatoRAS.SetWindowText(
"Autenticating" ); break;
    case RASCS_AuthNotify: 
    case RASCS_AuthRetry: 
    case RASCS_AuthCallback: 
    case RASCS_AuthChangePassword:	break;
    case RASCS_AuthProject:		m_StatoRAS.SetWindowText(
"Projecting on the net" ); break;
    case RASCS_AuthLinkSpeed: 
    case RASCS_AuthAck: 
    case RASCS_ReAuthenticate:		break;
    case RASCS_Authenticated:		m_StatoRAS.SetWindowText(
"Authenticated" ); break;
    case RASCS_PrepareForCallback: 
    case RASCS_WaitForModemReset: 
    case RASCS_WaitForCallback:		break;
    case RASCS_Projected:		m_StatoRAS.SetWindowText(
"Projected on the net" ); break;
 
#if (WINVER >= 0x400) 
    case RASCS_StartAuthentication:    // Windows 95 only 
    case RASCS_CallbackComplete:       // Windows 95 only 
    case RASCS_LogonNetwork:           // Windows 95 only 
#endif 
 
    case RASCS_Interactive: 
    case RASCS_RetryAuthentication: 
    case RASCS_CallbackSetByCaller: 
    case RASCS_PasswordExpired:		break;
 
    case RASCS_Connected:		ChangeRasState( RAS_ON );
					// qui siamo davvero connessi!
					break;
    case RASCS_Disconnected:		ChangeRasState( RAS_OFF ); 
					ModemTimer( TIMER_STOP ); 
					break;
    }
----------------
ciao,
				Alex :)