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

API, COM et SDKs Delphi Discussion :

URL d'Internet Explorer


Sujet :

API, COM et SDKs Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 4
    Points : 2
    Points
    2
    Par défaut URL d'Internet Explorer
    Bonjour,

    Je voudrais récupérer l'URL actuelle d'IE (ou des IE).
    J'ai vu des débuts de réponse sur le forum, mais rien de vraiment fonctionnel: en DDE mais uniquement la récupération du dernier IE actif.

    Quelqu'un à une idée, un composant, une API... ?

    Merci d'avance.

    David

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Ce code trouvé je ne sais plus où récupére les URLs tapées dans la barre d'IE :
    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
    uses registry; 
     
    procedure ShowTypedUrls(Urls: TStrings); 
    var 
      Reg: TRegistry; 
      S: TStringList; 
      i: Integer; 
    begin 
      Reg := TRegistry.Create; 
      try 
        Reg.RootKey := HKEY_CURRENT_USER; 
        if Reg.OpenKey('Software\Microsoft\Internet Explorer\TypedURLs', False) then 
        begin 
          S := TStringList.Create; 
          try 
            reg.GetValueNames(S); 
            for i := 0 to S.Count - 1 do 
            begin 
              Urls.Add(reg.ReadString(S.Strings[i])); 
            end; 
          finally 
            S.Free; 
          end; 
          Reg.CloseKey; 
        end; 
      finally 
        Reg.Free; 
      end; 
    end; 
     
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      ShowTypedUrls(ListBox1.Items); 
    end;
    Si ça marchait, ça se saurait...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup mais ton code me donne les dernières adresses saisies dans le combo d'IE.
    Je cherche plutot à récupérer les adresse des IE ouverts. Ces adresses ne sont pas forcément saisies mais dues par exemple à un clique sur un lien dans une autre page.

    Quelqu'un à une autre idée ?

    J'ai entendu parler de WININET mais je ne sais pas vraiment à quoi ce sert et si cette bibliothèque contient ce que je cherche.

    J'ai peut-être une autre solution mais je ne sais pas plus comment faire : Faire un raccourcis dans le menu Outils d'IE (ca je sais faire) qui lance un exe avec comment paramètre l'adresse (ca je sais faire aussi). Je pourrais donc faire un MONSOFT.EXE www.adresse.com et mon exe récupère l'adresse. Mais il faudrait qu'IE ai une variable(contenant l'adresse du site actuel) à passer, du style MONSOFT.EXE %URL%
    Est-ce que quelqu'un sait si cette variable existe ?

    A+

    David

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 66
    Points : 129
    Points
    129
    Par défaut
    Je pense que tu as vu ce code sur about.delphi.com. Effectivement, il fonctionne avec DDE et uniquement sur la dernière instance de IE :
    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
     
       17/2002. How to get the current URL from IE 
    {
    You can quickly retrieve the current 
    Internet Explorer's URL with DDE.
    There are a few problems with 
    this technique:
     
    - multiple instances of IE could 
    be open; in most cases the code 
    retrieves URL from the last active
    window.
    }
    uses
      DDEMan;
     
    // add a button and a memo on a form!
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      DDE:TDDEClientConv;
    begin
      DDE:=TDDEClientConv.Create(self);
      if DDE.SetLink(
        'IExplore',
        'WWW_GetWindowInfo') then
       Memo1.Lines.Add
        (DDE.RequestData('0xFFFFFFFF,sURL,sTitle'));
      DDE.Free;
    end;
    En ce qui concerne tous les IE actifs, ça me semble plus compliqué. On peut certes lister tous les processus actifs de type IE, mais récupérer après leur URL semble délicat. On va y penser .....

    A+
    Consultez :
    - La F.A.Q Delphi + Les Cours Delphi
    - La sélection des Freewares Delphi

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Encore merci pour la réponse.

    Depuis j'ai encore eu une autre idée.
    Est-il possible de récupérer les textes de tous les objets d'une fenêtre, avec les handles.
    Je parviens à avoir les titres des fenêtres mais je ne parvien pas à accéder aux objets contenus dans ces fenêtres.

    A+

    David

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci à tous mais j'ai trouvé la solution.
    La voici si ca interesse quelqu'un :

    - Je fais un EnumWindows(@EnumWindowsCallback,0)
    - Dans la fonction EnumWindowsCallback je fais un GetClassName(hWnd,Classe,SizeOf(Classe)) pour récupérer les noms des classes.
    - Si la classe est du type IEFrame (c'est le nom des classes IE) je fais un EnumChildWindows(hWnd, @EnumChildProc,0) pour connaitre les objets contenus dans le fenêtre d'IE.
    - Dans la fonction EnumChildProc je test la classe de chaque objet avec un GetClassName(hWnd,Classe,SizeOf(Classe)).
    - Si la classe est un ComboBoxEx32 alors je fais SendMessage(hWnd,WM_GETTEXT,255,Longint(@Buffer)) pour récupérer le texte contenu dans ce combobox.

    Et voila, c'est tout.

    A+

    David

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/02/2011, 11h58
  2. Internet Explorer
    Par remid1985 dans le forum IE
    Réponses: 3
    Dernier message: 22/01/2004, 13h52
  3. Comment récupérer les adresses WWW dans Internet Explorer ?
    Par chaours dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/09/2003, 14h27
  4. Créer un plug-in pour Internet Explorer
    Par giaco dans le forum C++Builder
    Réponses: 4
    Dernier message: 25/06/2003, 18h12
  5. internet explorer
    Par numeror dans le forum Web & réseau
    Réponses: 2
    Dernier message: 22/07/2002, 09h23

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