Interception évenement : connexion internet active.

Signaler
Messages postés
86
Date d'inscription
dimanche 1 mai 2005
Statut
Membre
Dernière intervention
18 juillet 2009
-
Messages postés
7
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
1 février 2009
-
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

Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Ben un ping toutes les x secondes semble la meilleure solution

ULARGE_INTEGERJokyQi=QI("Joky"
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
12
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..."
Messages postés
86
Date d'inscription
dimanche 1 mai 2005
Statut
Membre
Dernière intervention
18 juillet 2009

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".
Messages postés
86
Date d'inscription
dimanche 1 mai 2005
Statut
Membre
Dernière intervention
18 juillet 2009

Le ping est une bonne solution. Peut-être plus fiable que internetgetconnectedstate.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
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++
Messages postés
7
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
1 février 2009

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 ?
Messages postés
7
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
1 février 2009

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();

}