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 :

Lire les Url


Sujet :

C++Builder

  1. #1
    Membre expérimenté 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
    Par défaut Lire les Url
    Bonjour a tous,

    depuis un moment j'essaie de faire une applicaoin qui me permettra
    d'enregistrer toutes les url tapé dans l'outil de navigateur internet

    En resumé, enregistrer toutes les url des sites visités !
    J'ajouterai ce module dans mon logiciel qui securise un parc informatique !
    cela servira a centraliser l'interdiction de l'ouverture de certains sites !

    J'ai verifier dans la base de registre mais les url enregsitrées ne correspondent pas ou tout ne s'y trouvent pas.

    faite : Executer->cmd->regedit et cherchez la cle TypeUrl (je crois)

    CurrentUser->software->microsoft->internet explore->TypeUrl
    devrais se trouver les url mais y a pas tout !
    dans
    CurrentUser->software->microsoft->internet explore->main
    se trouve la cle de la page de demarrage dans "StartPage"

    Moi j'ai besoin de connaitre l'url tapé, directement lorsque la recherche est lancé, meme si le site ne s'ouvre pas !

    j'ai essayé de lire le handle du process internet exploreur , je n'obtiens que le titre de la page, mais apparement y a pas de handle de la barre d'adresse.

    handle est : l'ID du process, avec cela vous pouvez lire et modifier
    l'interface du process ! je pourrai vous poster un exemple

    Qui peut me trouver une idée a resoudre mon problème ?


    Merci d'avance

  2. #2
    Membre expérimenté 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
    Par défaut
    je pense avoir trouver avec cela

    Handle = hwndFindWindow(handled, "WorkerA")
    WorkerA pour IE 5
    WorkerW pour IE 6

    je teste et vous tien au courant

  3. #3
    Membre expérimenté 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
    Par défaut
    voila ce qui devrai donné tout les url en cours dans l'internet explore !

    mais ca m'affiche que du " " ( blanc )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
      A mettre dans un timer ou callback
     
      AnsiString var = URL();
      if( ( var != "Error" ) && ( var.IsEmpty()==false ) )
      listView->Items->Add( var );

    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
     
     
    AnsiString TForm1::URL()
    {
     
    //Récupération de l'URL en cours dans Internet Explorer
     
    // j'utilise SetWindowText pour faire un test !
    // si c'est trouvé je change le texte du handle
     
    //Retrouve le Handle de la fenêtre principale
    int Mem;
    HWND Explorer,ClientWork,Toolbar,ComboBox,ComboBoxChild,Edit;
     
    Mem=0;
    Explorer = NULL;
    ClientWork = NULL;
    Toolbar = NULL;
    ComboBox = NULL;
    ComboBoxChild = NULL;
    Edit = NULL;
    AnsiString Result = "Error";
     
        Explorer = FindWindow("IEFrame",0);
        if ( Explorer == NULL )  return Result;
        SetWindowText(Edit,"IEFrame");          // ceci est un test 
     
        //Cherche le Handle de la fenêtre de travail
        ClientWork = FindWindowEx(Explorer,0,"WorkerA",NULL);
        if ( ClientWork == NULL)
         {//Compatibilité XP / 98
           ClientWork = FindWindowEx(Explorer,0,"WorkerW",NULL);
        }else return "WorkerA_W";                  // permet voir ou il y a erreur
        SetWindowText(Edit,"WorkerA");           // ceci est un test 
     
        //Retrouve le Handle de la ToolBar
        Toolbar = FindWindowEx(ClientWork,0,"ReBarWindow32",NULL);
        if ( Toolbar == NULL) return "ReBarWindow32";
        SetWindowText(Edit,"ReBarWindow32");    // ceci est un test 
     
        //Cherche le Handle du ComboBox
        ComboBox = FindWindowEx(Toolbar,0,"ComboBoxEx32", NULL);
        if ( ComboBox == NULL) return "ComboBoxEx32";
        SetWindowText(Edit,"ComboBoxEx32");
     
        ComboBoxChild = FindWindowEx(ComboBox,0,"ComboBox",NULL);
        if ( ComboBoxChild == NULL) return "ComboBox";
        SetWindowText(Edit,"ComboBox");
     
        //Atteint l'Edit et envoie un message pour avoir le texte
        Edit = FindWindowEx(ComboBoxChild,0,"Edit",NULL);
        if ( Edit == NULL) return "Edit";
        SetWindowText(Edit,"Edit");
     
        Mem = GetWindowTextLengthA(Edit);
        char *szTitre;
        szTitre = new char[Mem+1];
        GetWindowTextA(Edit,szTitre,Mem+1);
     
        return szTitre;
     
        //listView->Items->Add( szTitre );
        //SendMessageA(Form1->listView->Handle,WM_GETTEXT,Mem+1,long(Result[1]));

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut Bily.sdi
    J'ai fait ceci apres avoir verifie que l'on recuperait bien les bon Handle
    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
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    //AnsiString TForm1::URL()
     
    //Récupération de l'URL en cours dans Internet Explorer
     
    // j'utilise SetWindowText pour faire un test !
    // si c'est trouvé je change le texte du handle
     
    //Retrouve le Handle de la fenêtre principale
    int Mem;
    HWND Explorer,ClientWork,Toolbar,ComboBox,ComboBoxChild,edit;
     
    Mem=0;
    Explorer = NULL;
    ClientWork = NULL;
    Toolbar = NULL;
    ComboBox = NULL;
    ComboBoxChild = NULL;
    edit = NULL;
    AnsiString Result = "Error";
        Explorer = FindWindow("IEFrame",0);
        if ( Explorer == NULL )  return; // Result;
        SetWindowText(edit,"IEFrame");          // ceci est un test
        //Cherche le Handle de la fenêtre de travail
        ClientWork = FindWindowEx(Explorer,0,"WorkerA",NULL);
        if ( ClientWork == NULL)
         {//Compatibilité XP / 98
           ClientWork = FindWindowEx(Explorer,0,"WorkerW",NULL);
        }else return; // "WorkerA_W";                  // permet voir ou il y a erreur
        SetWindowText(edit,"WorkerA");           // ceci est un test
        //Retrouve le Handle de la ToolBar
        Toolbar = FindWindowEx(ClientWork,0,"ReBarWindow32",NULL);
        if ( Toolbar == NULL) return; // "ReBarWindow32";
        SetWindowText(edit,"ReBarWindow32");    // ceci est un test
        //Cherche le Handle du ComboBox
        ComboBox = FindWindowEx(Toolbar,0,"ComboBoxEx32", NULL);
        if ( ComboBox == NULL) return; // "ComboBoxEx32";
        SetWindowText(edit,"ComboBoxEx32");
        ComboBoxChild = FindWindowEx(ComboBox,0,"ComboBox",NULL);
        if ( ComboBoxChild == NULL) return; // "ComboBox";
        SetWindowText(edit,"ComboBox");
        //Atteint l'Edit et envoie un message pour avoir le texte
        edit = FindWindowEx(ComboBoxChild,0,"Edit",NULL);
    int lng = SendMessage(edit, WM_GETTEXTLENGTH, 0, 0);
    char Chain[100]; // voir pour parametrer en fonction de lng
    SendMessage(edit, WM_GETTEXT, lng + 1, int (Chain));
    Edit1->Text = Chain;
    }
    Chez moi je recupere bien l'URL dans le TEdit
    Il sera necessaire de parametrer le tableau Chain en fonction de la longueur lng qui est fonction de l'URL

  5. #5
    Membre expérimenté 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
    Par défaut Solution Ok
    Merci, j'ai trouvé la solution autrement ;-)

    Le problem que j'avais est que mon IE6 contient la toolbar msn !!
    ce qui me permet d'avoir plusieurs fenettres dans 1 grace aux onglets

    la methode de lire les url ne fonctionne pas si on utilise des onglets !!!

    je vais quant meme essayer trouver une solution global !
    pour Mozilla qu'elle est le chemin ?
    Avec ma methode je peux afficher les classes enfants et ......

    voici ma methode pour c++builder 6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       Form1->listView->Items->Clear();
     
       EnumWindows(WNDENUMPROC (EnumWindowsProc), 0);
    }
    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
     
     
    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;
    }

    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
     
     
    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;
    }

    Merci Blondelle d'avoir participé ;-)

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Je suis content que tu est resolu ton probleme

  7. #7
    Membre expérimenté 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
    Par défaut
    c'est réussi, même si vous utilisez des onglets dans IE6

    cela fonctionne, il faut retirer la condition "IEframe"
    pour Mozilla j'obtiens les titres des pages mais pas encore l'URL

    Laisser tourné et faite juste un test dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      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;
     }
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [À lire] Les règles de ce forum
    Par hiko-seijuro dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/09/2009, 16h55
  2. [XML] Impossible de lire les urls
    Par HwRZxLc4 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 14/05/2009, 16h22
  3. Réponses: 4
    Dernier message: 01/03/2008, 00h29
  4. Lire les pistes d'un cd audio qd il y a plusieur lecteurs cd
    Par busy999 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/10/2003, 09h26
  5. Réponses: 5
    Dernier message: 20/08/2002, 18h01

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