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++ Discussion :

Récupérer l'URL d'IE ou Mozilla (API Win32) - Visual C++ : problème pour lire l'url


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Récupérer l'URL d'IE ou Mozilla (API Win32) - Visual C++ : problème pour lire l'url
    Bonjour,

    voici mon problème, j'espère que quelqu'un pourra m'aider.

    Je suis sous Visual C++ 2005, Vista.

    Je récupère l'Edit de ComboBox de ComboBoxEx32...

    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
     
    #define TEXT_LENGTH 1024
    char text[TEXT_LENGTH];
     
    //dans la fonction principale :
     
    window = FindWindowEx(window, 0, "WorkerW", NULL) ;
    window = FindWindowEx(window, 0, "ReBarWindow32", NULL) ;
    window = FindWindowEx(window, 0, "ComboBoxEx32", NULL) ;
    window = FindWindowEx(window, 0, "ComboBox", NULL) ;
    window = FindWindowEx(window, 0, "Edit", NULL) ;
     
    SendMessage(window, WM_GETTEXT, (WPARAM)TEXT_LENGTH, (LPARAM)text );
     
     
    MessageBox(NULL, text, "URL", MB_OK);
     
    //... fin de mon code
    Problème : voici ce qui s'affiche dans la boite de dialogue où devrait se trouver l'URL : "AutoCompleteProxy".

    Pouvez-vous m'aider svp ??
    ...

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je n'ai pas la même hiérarchie sous IE7 (Windows XP). Moi, j'ai ceci:
    • <Titre> IEFrame
    • "Navigation Bar" WorkerW
    • "" ReBarWindow32 (id=0xA005)
    • ""Address Band Root (id=0xA205)
    • <url> ComboBoxEx32 (id=0xA205)
    • "" ComboBox (id=0xA205)
    • <url> Edit (id=0xA205)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Je n'ai pas la même hiérarchie sous IE7 (Windows XP). Moi, j'ai ceci:
    • <Titre> IEFrame
    • "Navigation Bar" WorkerW
    • "" ReBarWindow32 (id=0xA005)
    • ""Address Band Root (id=0xA205)
    • <url> ComboBoxEx32 (id=0xA205)
    • "" ComboBox (id=0xA205)
    • <url> Edit (id=0xA205)

    J'ai inséré le code suivant
    window = FindWindowEx(window, 0, "Address Band Root", NULL) ;
    après la recherche de ReBarWindow32 mais ça ne change rien...

    Je débute, peux-tu m'indiquer comment l'insérer dans mon code stp ?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Plutôt que FindWindow, essaie plutôt GetDlgItem(0xA205) en boucle jusqu'à ce que tu tombes sur l'Edit (ou sur NULL, ce qui signifiera un échec)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Plutôt que FindWindow, essaie plutôt GetDlgItem(0xA205) en boucle jusqu'à ce que tu tombes sur l'Edit (ou sur NULL, ce qui signifiera un échec)...
    Je suis trop null en fait le problème c'est que je récupérais pas la barre de navigation.

    Maintenant ça marche pour IE mais pas pour Mozilla. J'y retourne et je vous tiens au courant.

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Pour Mozilla, la méthode appliquée à IE semble inutilisable car la fenetre "MozillaUIWindowClass" comporte uniquement des "MozillaWindowClass" et on ne peut pas descendre jusqu'à l'URL.

    Quelqu'un pourrait-il m'orienter pour savoir si je dois faire un programme totalement différent ou s'il peut y avoir compatibilité avec mon programme C++.

    J'ai notamment vu quelques trucs sur XUL. Si quelqu'un connaît...

    D'avance merci.

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    À mon avis, non.
    Je ne sais même pas si mozilla expose quelque chose pour les autres processus...

    PS: Ce n'est pas non plus la bonne façon de le faire sous IE, en fait: Normalement, on est censé utiliser COM/OLE pour communiquer avec.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre actif Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Points : 206
    Points
    206
    Par défaut
    moi je fais comme ceci et aucun problem sauf pour Mozilla y a rien a faire
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       Form1->listView->Items->Clear();
     
       EnumWindows(WNDENUMPROC (EnumWindowsProc), 0);
    }
     
    LRESULT CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
    {
      char szClass[128];
      GetClassName( hwnd, szClass, sizeof(szClass) );
     
      if(!strcmp(szClass, "IEFrame"))
      {
         // Recherche des classes Enfants
         EnumChildWindows(hwnd, WNDENUMPROC(EnumChildProc),0);  
     
        char szTitre[128];
        GetWindowTextA(hwnd, szTitre, sizeof(szTitre));
     
        bool trouver = false;
        for(int i=0; i<Form1->listView->Items->Count && trouver==false; i++)
        {
          if( AnsiString(szTitre) == Form1->listView->Items->Strings[i] )
          trouver = true;
        }
     
       if(!trouver)   // titre des nouvelles fenetre IE
       Form1->listView->Items->Add( szTitre );  
     
      }
      return true;
    }
     
    //Avec cette methode : lire les url ne fonctionne pas si on utilise des onglets !!!
    LRESULT CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
    {
      // Type de classe enfant :
      // WorkerW||WorkerA; ReBarWindow32; ComboBoxEx32; ComboBox; Edit.
     
      char szClass[128];
      GetClassName( hwnd, szClass, sizeof(szClass) );
     
      if(!strcmp(szClass, "Edit"))
      {
        char szTitre[128];
        SendMessage(hwnd,WM_GETTEXT,sizeof(szTitre),LPARAM(szTitre));
     
        Form1->listView->Items->Add( szTitre );
      }
     
     return true;
    }
     
     
    //Avec cette methode : c'est réussi, même si vous utilisez des onglets dans IE6
    //cela fonctionne, il faut retirer la condition "IEframe"
     
    LRESULT CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
     {
      char szTitre[128];   GetClassName(hwnd, szTitre, sizeof(szTitre) );   
     
      SendMessage(hwnd,WM_GETTEXT,sizeof(szTitre),LPARAM(szTitre));
     
      if(    (strstr(szTitre, "http") !=NULL) 
          || (strstr(szTitre, "www")  !=NULL)   )
     
          Form1->listView->Items->Add( szTitre );
     
      return true;
     }
    @+

Discussions similaires

  1. Problème pour ouvrir une URL
    Par BibiDev11 dans le forum Android
    Réponses: 2
    Dernier message: 22/01/2014, 12h58
  2. Problème pour lire le contenu d'une url
    Par eric41 dans le forum Langage
    Réponses: 3
    Dernier message: 25/12/2012, 23h30
  3. [URL] problème pour créer un url a partir d'une adresse relative
    Par luckyvae dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 04/10/2007, 11h37
  4. [RegEx] Problème pour transformer les url en liens cliquable
    Par AlphaYoDa dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2006, 13h54
  5. [API win32] Récupérer le répertoire d'un profile
    Par sbeu dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 27/09/2002, 12h38

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