Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Prüfen, ob man Online ist

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 ]
000
17.08.2004, 18:26 Uhr
RedEagle



Habe ncoh ein Probem:

die Funktion

C++:
bool online()
{
DWORD dwFlags;
bool RetVal = InternetGetConnectedState(&dwFlags, 0);
return RetVal;
}



gibt IMMER true aus, ob ich online bin, oder nicht.
bzw "RetVal" ist immer true

gibts da evlt ne Bessere Methode um zu Prüfen, ob man Online ist oder nicht??
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.08.2004, 18:29 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ich würde wenn true abprüfen ob dwFlags einen der folgenden Werte hat:


Code:
INTERNET_CONNECTION_CONFIGURED  Local system has a valid connection to the Internet, but it might or might not be currently connected.
INTERNET_CONNECTION_LAN         Local system uses a local area network to connect to the Internet.
INTERNET_CONNECTION_MODEM       Local system uses a modem to connect to the Internet.
INTERNET_CONNECTION_OFFLINE     Local system is in offline mode.
INTERNET_CONNECTION_PROXY       Local system uses a proxy server to connect to the Internet.


--
class God : public ChuckNorris { };

Dieser Post wurde am 17.08.2004 um 18:30 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.08.2004, 18:37 Uhr
RedEagle



hä, wie?

C++:
bool RetVal = InternetGetConnectedState(INTERNET_CONNECTION_LAN, 0);



---

Also

C++:
bool online()
{
DWORD dwFlags;
bool RetVal = InternetGetConnectedState(&dwFlags, 0);

if(dwFlags == INTERNET_CONNECTION_LAN)
{
  return true;
}

return RetVal;
}


geht nciht, es kommt auch immer true raus.
--
MFG RedEagle

Dieser Post wurde am 17.08.2004 um 18:40 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.08.2004, 19:02 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
bool online()
{
  DWORD dwFlags;
  bool RetVal = InternetGetConnectedState(&dwFlags, 0);
  if(RetVal)
    return (dwFlags & INTERNET_CONNECTION_LAN == INTERNET_CONNECTION_LAN);
  return false;
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.08.2004, 19:12 Uhr
RedEagle



jetzt wird false zurückgegebnen, obwohl ich online bin
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.08.2004, 19:36 Uhr
(un)wissender
Niveauwart


Ich vermute mal, dass der Rückgabewert von InternetGetConnectedState nicht bool ist, sondern BOOL, was ein typedef für int, vielleicht macht das Probleme.
Das hattest du schonmal Red Eagle, wäre vielleicht nicht verkehrt, wenn du dir merken würdest, das die WinAPI in c ist und dort kein bool existiert.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
17.08.2004, 20:16 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hab mal in meinem code gesucht:


C++:
DWORD dwFlags = INTERNET_CONNECTION_MODEM;
InternetGetConnectedState(&dwFlags,0);
if(dwFlags!=81)
{
  // offline
}



wie ich auf den wert 81 kam weiß ich nich mehr, probiers halt mal auf was dir dwFlags gesetzt wird wenn du online bist und wenn du offline bist
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
18.08.2004, 10:19 Uhr
RedEagle



Also ich habe den wert von dwFlags mal ausgegeben, aber es kam, egal ob ich Online oder Offline war, immer "18" raus


C++:
nt main()
{
DWORD dwFlags = INTERNET_CONNECTION_MODEM;
InternetGetConnectedState(&dwFlags,0);
/*if(dwFlags!=81)
{
  // offline
}*/


for(int i=0; i!=20; i++)
{
  dwFlags = INTERNET_CONNECTION_MODEM;
  InternetGetConnectedState(&dwFlags,0);
  std::cout << dwFlags << std::endl;
}

std::cin.get();
return 0;
}


--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
18.08.2004, 11:23 Uhr
RedEagle




C++:
bool Status;  
  DWORD dwFlags;
  
  Status = InternetGetConnectedState(&dwFlags, 0);
  
  if(Status==1)
  {
    return true;    
  }
  else if(Status==0)
  {
    return false;
  }  


Funktioniert, allerdings erst, nachdem man mehrere Minuten (~10Min) Offline ist.
Währe zwar schöner wenn es sofort ginge, aber das reicht mir.



ps.: Er merkt aber sofort, wenn man Online geht
pss.: Bin aber für Schnellere Lösungen immer daknbar
--
MFG RedEagle

Dieser Post wurde am 18.08.2004 um 11:40 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
18.08.2004, 12:20 Uhr
(un)wissender
Niveauwart


Hallo, Red Eagle, dein code ist fehlerhaft!
InternetGetConnectedState gibt kein bool zurück, du kannst Glück haben, das es funktioniert, aber garantiert ist das nicht.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


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: