Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Sobaldabfrage

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
19.05.2004, 13:04 Uhr
~A-l-e-x
Gast


Es gibt ja eine if-Abfrage. Gibt es auch eine Sobald-Abfrage? Ich will nämlich sobald das zutrifft ein Ereignis auslösen. Ich hab hier in dem Forum das gefunden:

C++:
DWORD connection = 0;
  if( InternetGetConnectedState(&connection,0) != 1)
  {
    AfxMessageBox("Error: Keine Internetverbindung verfügbar");
    return 0;
  }


Wenn eine Internetverbindung aktiv ist, dann... Ich will aber sobald eine Internetverbindung aktiv ist, dann ....

Ich hoffe man kann mir helfen
A-l-e-x
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.05.2004, 13:16 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


diese sogenante sobald abfrage kansst du durch eine schleife realisiern

also

C++:
while(InternetGetConnectedState(&connection,0) != 1)Sleep(100);



das Sleep ist nur dafür das die prozessorlast nicht gegen 100% geht...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.05.2004, 13:21 Uhr
~toxic
Gast


hi, oder halt mit events arbeiten, ich weiss jetzt aber nicht welche das dann sind.
--
grusz
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.05.2004, 17:36 Uhr
~A-l-e-x
Gast


Danke Windalf, ich denke das kann man so machen. Doch von toxic hört sich auch interessant an. Jemand 'ne Ahnung was für ein Event es sein könnte?

A-l-e-x
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.05.2004, 18:30 Uhr
~Michael
Gast


Schau mal unter CEvent und Synchronisation nach! Mit CEvent kannst du solche "Tore" bauen. Also wenn das eingetreten ist, sage dem anderen er kann weiter machen.

Oder du benutzt Nachrichten. (Benutzerdefinierte)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.05.2004, 18:32 Uhr
Spacelord
Hoffnungsloser Fall


Schau mal nach RasConnectionNotification

MfG Spacelord

--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.05.2004, 18:44 Uhr
~A-l-e-x
Gast


O.k. wie kann ich so ein CEvent oder Synchronisation zusammenbastelln (hab das noch nie gemacht ) Kann jemand helfen?

A-l-e-x
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.06.2004, 19:26 Uhr
~A-l-ex
Gast


Ok. Das WaitForCon() hört sich gut an. Doch irgendwie krieg ich Compilerproblemme:
error C2065: 'RasConnectionNotification' : undeclared identifier
error C2065: 'RASCN_Connection' : undeclared identifier
Ich hab das hier gemacht:
C++:
//Irgendwas.h
#include <ras.h>
#include <windows.h>
...
void WaitForCon();

//Irgendwas.cpp
void WaitForCon()
{
    HANDLE connection = CreateEvent(NULL,TRUE,FALSE,"CON");
    //Wartet auf Verbindung
    RasConnectionNotification(NULL,connection,RASCN_Connection);
    WaitForSingleObject(connection,INFINITE);
    //Nach der Verbindung
}



A-l-e-x
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
03.06.2004, 20:49 Uhr
Spacelord
Hoffnungsloser Fall


Welchen Compiler nutzt du,welchen servicepack,welche Windowsversion?
Unter XP hatte ich die gleichen Probleme aber mit dem ras Header aus dem aktuellen Plattform SDK hab ich es ans laufen bekommen.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: