IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Tester à chaque instant si je suis connecté ou pas sur internet


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Points : 35
    Points
    35
    Par défaut Tester à chaque instant si je suis connecté ou pas sur internet
    bonjour;
    * j'ai developpé une petite application qui calcul le temps de connextion.
    * Cette application execute au demarage de la machine.
    voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      TRegistry *Reg = new TRegistry();
        Reg->RootKey = HKEY_LOCAL_MACHINE;
        Reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", false);
        Reg->WriteString("ControlInternet", "C:\\Project1.exe");
        delete Reg;

    * Et lancer en mode Tray Icon.
    voila le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        TrayIcon1->Icons=ImageList1;
       TrayIcon1->Visible=true;
       TrayIcon1->Minimize();
       TrayIcon1->Animate=true;
    * J'ai utilise un compteur à l'aide de Timer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    int nombre ;
    nombre = 0 ;
    nombre++ ;
    Label1->Caption = Label1->Caption.ToInt() + 1 ;
    }
    * Pour test si je suis connecter ou pas , j'ai utilisé le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     typedef BOOL (WINAPI *PF_INETGETCONNECTEDSTATE)(LPDWORD, DWORD);
     HANDLE hWinInet;
     PF_INETGETCONNECTEDSTATE pfInternetGetConnectedState;
    //.............
    hWinInet = LoadLibrary("WININET.DLL");  //Chargement de la dll
        if(hWinInet == NULL)
            {
             Label1->Caption = "Impossible de charger Wininet.dll";
             return;
            }
    pfInternetGetConnectedState = (PF_INETGETCONNECTEDSTATE) GetProcAddress(
                              hWinInet, "InternetGetConnectedState");
                    // affectation du pointeur sur la fonction
        if(pfInternetGetConnectedState == NULL)
            {
             Label1->Caption = "Erreur appel fonction InternetGetConnectedState";
             if(hWinInet) FreeLibrary(hWinInet);
             return;
            }
    //.............
    DWORD TypeCon ;
    if (pfInternetGetConnectedState(&TypeCon, 0)) //appel de la fonction
         {
          Timer1->Enabled = true ;
          Label2->Caption = "Connecté";
         }
    else
         {
          Timer1->Enabled = false ;
          Label2->Caption = "Déconnecté";
         }
          //.............
    if(hWinInet) FreeLibrary(hWinInet);
    * le probleme est :
    ou je mit le teste? (tanque l'application est en execution je teste si je suis
    conncté sur interner ou pas).
    remarque : l'application est mode Tray Icon

  2. #2
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    Bonjour

    J'ai pas très bien compris la question et je pense ne pas être le seul

    tu a un label qui indique si la connections est active ou pas
    et ce label est dans un TForm1 qui est visible.

    je voit pas ou est le problème ?

    A+
    .
    Why
    .
    //------------------

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    bonjours
    mon probleme est le suivant:
    lorsque mon application est deja executer, ensuite je connecte sur internet, il m'affiche "deconnecté".
    lorsque je connecte sur internet ensuit j'execute mon application, il m'affiche "cennect", mais si je déconnecte il m'affiche toujours "connecte".
    merci.

  4. #4
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    Bonjour

    Je pense qu'il te faudrais un deuxième Timer pour contrôler toute les X seconde l'état de la connections

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    void __fastcall TForm1::Timer2Timer(TObject *Sender)
    {
     typedef BOOL (WINAPI *PF_INETGETCONNECTEDSTATE)(LPDWORD, DWORD);
     HANDLE hWinInet;
     PF_INETGETCONNECTEDSTATE pfInternetGetConnectedState;
    //.............
    hWinInet = LoadLibrary("WININET.DLL");  //Chargement de la dll
        if(hWinInet == NULL)
            {
             Label1->Caption = "Impossible de charger Wininet.dll";
             return;
            }
    pfInternetGetConnectedState = (PF_INETGETCONNECTEDSTATE) GetProcAddress(
                              hWinInet, "InternetGetConnectedState");
                    // affectation du pointeur sur la fonction
        if(pfInternetGetConnectedState == NULL)
            {
             Label1->Caption = "Erreur appel fonction InternetGetConnectedState";
             if(hWinInet) FreeLibrary(hWinInet);
             return;
            }
    //.............
    DWORD TypeCon ;
    if (pfInternetGetConnectedState(&TypeCon, 0)) //appel de la fonction
         {
          Timer1->Enabled = true ;
          Label2->Caption = "Connecté";
         }
    else
         {
          Timer1->Enabled = false ;
          Label2->Caption = "Déconnecté";
         }
          //.............
    if(hWinInet) FreeLibrary(hWinInet);
    }
    A+
    .
    Why
    .
    //------------------

  5. #5
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    Peut être au moyen d'un thread.
    En fouillant un peu, je suis tombé d'ailleurs sur un exemple de classe 'TThread/TTimer' surement bien plus propre que ce que je vais poster en suivant: voir l'exemple de DjmSoftware

    Sinon, j'avais 'bricolé' ceci:

    .H:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    #ifndef UnitThreadH
    #define UnitThreadH
    #include <Classes.hpp>
    //---------------------------------------------------------------------------
     
    class TIConn : public TThread
    {
    private:
    String aff;
    protected:
    		void __fastcall Execute();
    		void __fastcall AffMessage();
    public:
    		__fastcall TIConn(bool CreateSuspended);
    };
     
    #endif
    .CPP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "UnitThread.h"
    #include "Unit3.h"
    //---------------------------------------------------------------------------
     
    #pragma package(smart_init)
     
     typedef BOOL (WINAPI *PF_INETGETCONNECTEDSTATE)(LPDWORD, DWORD);
     HANDLE hWinInet;
     PF_INETGETCONNECTEDSTATE pfInternetGetConnectedState;
    __fastcall TIConn::TIConn(bool CreateSuspended)
            : TThread(CreateSuspended)
    {
     
    }
    //---------------------------------------------------------------------------
    void __fastcall TIConn::Execute()
    {
    ////////////
    hWinInet = LoadLibrary("WININET.DLL");  //Chargement de la dll
    		if(hWinInet == NULL)
    		{
    			Form3->LabelConn->Caption = "Impossible de charger Wininet.dll";
    		return;
            }
    			pfInternetGetConnectedState = (PF_INETGETCONNECTEDSTATE) GetProcAddress(
                              hWinInet, "InternetGetConnectedState");
                    // affectation du pointeur sur la fonction
    		if(pfInternetGetConnectedState == NULL)
            {
    			Form3->LabelConn->Caption = "Erreur appel fonction InternetGetConnectedState";
    			if(hWinInet) FreeLibrary(hWinInet);
    		return;
    		}
    		else
    		{
    			do
    			{
    				DWORD TypeCon ;
    				aff = "";
    				if (pfInternetGetConnectedState(&TypeCon, 0)!=FALSE) //appel de la fonction
    				{
    					aff = AnsiString("Connecté ");
    					Synchronize(&AffMessage);
    				}
    				else
    				{
    					aff = AnsiString("Not connected");
    					Synchronize(&AffMessage);
    				}
    			}  while(!Terminated);
    		}
     
    ///////////
    }
    //---------------------------------------------------------------------------
    void __fastcall TIConn::AffMessage()
    {
    Form3->LabelConn->Caption = aff;
    }
    //---------------------------------------------------------------------------
    Sur le même sujet: tuto

    Ce que j'ai posté fonctionne (pour le peu de test que j'ai fait), et peut servir d'exemple, mais est forcement a retravailler (je n'ai pas gérer la sortie du TThread, etc ...).

    En espérant t'aider,
    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

Discussions similaires

  1. yast2 ne se connecte pas sur internet
    Par alexendre dans le forum SUSE
    Réponses: 0
    Dernier message: 13/05/2009, 16h50
  2. Réponses: 5
    Dernier message: 04/04/2008, 20h14
  3. tester si le câble reseau est connecté
    Par lezurp dans le forum C++
    Réponses: 3
    Dernier message: 19/03/2008, 20h02
  4. Réponses: 3
    Dernier message: 09/08/2007, 13h23
  5. Réponses: 1
    Dernier message: 29/04/2006, 22h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo