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