007 
            29.05.2004, 16:39 Uhr 
            Spacelord 
            Hoffnungsloser Fall
             
             
             
             
             | 
          Schau dir mal dieses kleine WinApi Beispiel an:
   
   
  
  
    | C++: | 
   
  
    
      
  #include <iostream> #include <windows.h> #include <ras.h>
  void WaitForCon(); bool getConStatus();
  int main() {     if(! getConStatus())         WaitForCon();
      return 0; }
  void WaitForCon() {     HANDLE connection = CreateEvent(NULL,TRUE,FALSE,"CON");     std::cout<<"Warte auf Verbindung"<<std::endl;     RasConnectionNotification(NULL,connection,RASCN_Connection);     WaitForSingleObject(connection,INFINITE);     std::cout<<"Verbindung hergestellt!!"<<std::endl;     }
 
  bool getConStatus() {     RASCONN Buffer[10];     RASCONNSTATUS VerbindungsStatus;     DWORD BufferSize = 10 * sizeof(RASCONN);     DWORD VerbindungsAnzahl=0;
      Buffer[0].dwSize = sizeof(RASCONN);
      // Verbindungen enumerieren     if (RasEnumConnections(Buffer,&BufferSize,&VerbindungsAnzahl))     {         if(VerbindungsAnzahl==0)         {             std::cout<<GetLastError()<<std::endl;                      }     }     else     {         if (VerbindungsAnzahl !=0)         {             std::cout<<"Verbunden ueber: "<< Buffer[0].szEntryName<<std::endl;         //Verbindungsstatus ermitteln                  VerbindungsStatus.dwSize = sizeof(RASCONNSTATUS);         RasGetConnectStatus(Buffer[0].hrasconn,&VerbindungsStatus);
              if(VerbindungsStatus.rasconnstate == RASCS_Connected)             {                 //IP auslesen                 RASPPPIP rasIp;                 rasIp.dwSize = sizeof(RASPPPIP);                 DWORD size     = sizeof(RASPPPIP);
                  RASPROJECTION Info = RASP_PppIp;
 
                      if (RasGetProjectionInfo(Buffer[0].hrasconn,Info,                         (void*)&rasIp,&size))
                          {                         std::cout<<"IP konnte nicht ausgelesen werden!"<<std::endl;                         }                     else                         std::cout<<"Aktuelle IP:"<<rasIp.szIpAddress<<std::endl;                                                                          }              }         else         {             //es besteht keine Verbindung             std::cout<<"Nicht verbunden!"<<std::endl;
              return false;         }     }     return true; }
 
  
       
      
     | 
   
   
  
  Nicht unbedingt MFC aber funktioniert! Interessant ist für dich natürlich die Funktion WaitForCon() und das bisschen kann man ja locker kapseln.getConStatus hat damit nichts zu tun und ist nur da damit das "Programm" halbwegs Sinn macht.
  PS:Um die Funktionen aus ras.h nutzen zu können musst du die rasapi32.lib mitlinken und unter XP brauchst du den Header aus dem aktuellen Plattform SDK!!
  MfG Spacelord   -- .....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes. |