计算机在用Modem拨号后,一定时间以后,我需要自动挂断该连接,不知哪位大侠能不吝赐教?分数不是问题,最好有源码。

解决方案 »

  1.   

    RasEnumConnections函数试试列举当前的连接
      

  2.   

    //那要你自己写拨号程序,在程序里头挂断吧
    if(m_hRasConn != NULL)
    {
    RasHangUp(m_hRasConn);
    m_hRasConn = NULL;
    Sleep(3000);
    }
      

  3.   

    我目前正在使用的函数:枚举当前所有连接,然后挂断(我只开了3个内存,节省内存)
    BOOL CDialerDlg::DisconnectRas()
    {
      bool bOk = false;
      RASCONN ras[3];
      DWORD dSize,dNumber,dCount;  ras[0].dwSize = sizeof(RASCONN);
      dSize = sizeof( ras );  // Get active RAS - Connection
      if( RasEnumConnections( ras, &dSize, &dNumber ) == 0 )
      {
       bOk = true;
       for( dCount = 0; dCount < dNumber; dCount++ )
       {
         // Hang up that connection
         if( RasHangUp(ras[dCount].hrasconn) != 0 )
         {
          bOk = false;
          break;
         }
       }
      }
      return bOk;
    }
      

  4.   

    //from msdn
    DWORD CloseRasConnections ()
    {
      int index;                 // An integer index
      TCHAR szError[100];        // Buffer for error codes 
      DWORD dwError,             // Error code from a function call 
            dwRasConnSize,       // Size of RasConn in bytes
            dwNumConnections;    // Number of connections found 
      RASCONN RasConn[20];       // Buffer for connection state data 
                                 // Assume the maximum number of entries is 
                                 // 20.   // Assume no more than 20 connections.
      RasConn[0].dwSize = sizeof (RASCONN);
      dwRasConnSize = 20 * sizeof (RASCONN);  // Find all connections.
      if (dwError = RasEnumConnections (RasConn, &dwRasConnSize, 
                                        &dwNumConnections))
      {
        wsprintf (szError, TEXT("RasEnumConnections Error: %ld"), dwError);
        return dwError;
      }  // If there are no connections, return zero.
      if (!dwNumConnections)
      {
        wsprintf (szError, TEXT("No open RAS connections"));
        return 0;
      }  // Terminate all of the remote access connections.
      for (index = 0; index < (int)dwNumConnections; ++index)
      {
        if (dwError = RasHangUp (RasConn[index].hrasconn))
        {
          wsprintf (szError, TEXT("RasHangUp Error: %ld"), dwError);
          return dwError;
        }
      }  return 0;
    }
      

  5.   

    同意 xpxia(华龙) 为每个连接设置一个定时器