Interception évenement : connexion internet active.

Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009 - 21 sept. 2006 à 19:24
nevaram Messages postés 7 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 1 février 2009 - 1 févr. 2009 à 11:36
Bonjour,
Je cherche à réaliser une fonction qui serait appelée lorsque l'utilisateur est connecté à internet (par exemlpe via internetgetconnectedstate de wininet.dll). Je ne préfère pas la mettre dans un timer, c'est certe une solution simple mais elle est trop coûteuse en performances et pas assez précise. Il faudrait peut-être créer un hook... mais cela nécessiterait une DLL et je ne crois pas que le hook soit approprié pour ce genre d'évenement.
Toutes vos idées sont les bienvenues.
Ce serait pour réaliser un programme de téléchargement qui continue automatiquement lorsque la connexion internet est active.
Merci.

Je le précise, au cas où, le programme est sous windows.

7 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
21 sept. 2006 à 20:39
Ben un ping toutes les x secondes semble la meilleure solution

ULARGE_INTEGERJokyQi=QI("Joky"
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
21 sept. 2006 à 20:44
cela ne revient pas au meme de faire une internetgetconnectedstate dans un timer?
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."
0
Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009
21 sept. 2006 à 20:50
Bien sûr, et comme ça dans le cas où l'utilisateur ne se connecte pas de la journée, on effectue 20000000 opérations pour rien. Tant pis, mon but était de créer le code le plus optimisé possible mé je vé la jouer "code sale".
0
Sim 2005 Messages postés 86 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 18 juillet 2009
21 sept. 2006 à 20:52
Le ping est une bonne solution. Peut-être plus fiable que internetgetconnectedstate.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 sept. 2006 à 23:41
internetgetconnectedstate est définitivement à oublier, c'est issu du temps des modems rtc mais ça ne donne absolument plus rien de valable maintenant.
Une tentative de connexion sur un serveur (type ping ou autre) est la seule méthode fiable.

ciao...
BruNews, MVP VC++
0
nevaram Messages postés 7 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 1 février 2009
1 févr. 2009 à 10:27
Bonjour,

L'antivirus ESET Nod32 propose une mis à jours lorsque : "connexion commutée à internet/VPN"

Il me fait la MAJ vraiment au moment où je change de connexion, il doit bien y avoir un moyen d'en fair autant.

Personne à une petite idée ?
0
nevaram Messages postés 7 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 1 février 2009
1 févr. 2009 à 11:36
Réponse à moi même:

Je ne sais pas si cette solution est propre ni s'il elle fonctionne chez tout le monde et encore moins s'il elle fonction en CPP ( je l'ai fait en C#).

En fait ma solution utilise le journal systeme

using

System.Diagnostics;

static

void Main(){

foreach (
EventLog log
in
EventLog.GetEventLogs()){

if (log.Log ==
"System"){

log.EnableRaisingEvents =

true; log.EntryWritten +=

new
EntryWrittenEventHandler(log_EntryWritten);
}

}

}

void log_EntryWritten(
object sender,
EntryWrittenEventArgs e){

if (e.Entry.Source ==
"Tcpip")DoAction();

}
0
Rejoignez-nous