Recuperer l'url de navigation [Résolu]

Signaler
Messages postés
11
Date d'inscription
vendredi 1 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2004
-
Messages postés
11
Date d'inscription
vendredi 1 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2004
-
Bonsoir,
je suis en train de creer une petite application, un bouton permettrai d'ajouter l'url de navigation dans une ComboBox de mon appli.

Je pensais utiliser l'api win32 pour le faire, mais je sais pas par ou commencer ?

si vous pouviez m'aider, merci.

12 réponses

Messages postés
1721
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
30 août 2020
5
Voir aussi

Grab the current URL from IE

Vous remarquerez au passage la similitude des 2 codes. Étonnant, n'est-il pas ? :shock)
Quelques indices subtils nous permettent de savoir lequel a pompé sur l'autre... :dissapprove)

Quoi qu'il en soit, ça fonctionne chez moi, avec IE, sans rien retoucher.

Bonne prog' :-p
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
10
Slt royreal !

Il faut utiliser le registre pour connaitre la page de démarrage (du moins c'est comme ça que je ferais) :

Ce code utilise un bouton et un ComboBox :
Uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
Var 
   Registre : TRegistry;
begin
//Récupère l'url de la page de démarrage
Registre:=TRegistry.Create; //Crée un objet TRegistry
Registre.RootKey:=HKEY_CURRENT_USER; //Définit la clé principale
Registre.OpenKey('\Software\Microsoft\Internet\Explorer\Main',False); 
{"OpenKey" ouvre une clé particulière (False signifie que la clé n'est pas crée si elle n'existe pas}
ComboBox1.Items.Add(Registre.ReadString('Start Page')); //Renvoie un string à partir du nom de la valeur et l'ajoute dans le ComboBox
Registre.CloseKey; //Ferme la clé
Registre.Free; //Détruit l'objet
end;


Quand la page de démarrage est une page vierge, la procédure renvoie la string 'about:blank'

Remarque : Suivant la version du système d'exploitation Windows, le chemin peut être différent...

:)
Bonne Prog'
Nico

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! :)
Messages postés
11
Date d'inscription
vendredi 1 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2004

Merci ni69,
je vais tester ton code, j'ai commencé à regarder les clés de registre, là on aura la page de démarrage c'est un bon début, mais si je veux ajouter dans un ComboBox, l'url des pages qu'on visite, un peu comme les favoris mais là le mettre dans un comboBox.

En tous les cas merci pour tes élèments.
Messages postés
323
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
2
J'ai fait différente recherche sur le net et on retrouve souvent le même code ;) à quelques ligne prêt... Mais la pluspart des sites on retrouve des commentaires comme quoi le code ne fonctionne pas. Mais sur le lien que japee propose tu retrouves le commentaire sur lequel j'ai pu me rendre compte que selon les version de Internet Explorer il faut mettre WorkerA ou WorkerW

Afin que le code reste compatible pour toutes les versions de IE utilise les deux tests :
worker := FindWindowEx(ie,0,'WorkerA',nil);

if worker = 0 then
  worker := FindWindowEx(ie,0,'WorkerW',nil);


Bonne Prog, ;)

Olivier

PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
Messages postés
11
Date d'inscription
vendredi 1 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2004

Merci encore :)

Valider "reponse acceptée", ca l'air vous tenir à coeur, why, il y'a des bonus à gagner ;)
Messages postés
323
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
2
Il n'y a rien à gagner ;) et cela ne me gène pas du tout que tu ne valides pas les réponses.

Si cette fonction à été implémenté sur ce site c'est qu'elle à une utilité. Celle de permettre au autres internautes qui ont les même problème que toi de venir regarder la réponse lorsque celle ci est validé.

Bonne Prog, ;)

Olivier

PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
Messages postés
11
Date d'inscription
vendredi 1 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2004

La validation de la réponse est une bonne idée et je trouve que c'est très bien pensé :)

Je viens de valider la réponse de japee, pour l'autre source, elle n'est plus accessible apparement. En tous les cas ca marche bien, je vais continuer ma prog, et j'aurais sans doute d'autres questions, je reviendrai ;)
Messages postés
1721
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
30 août 2020
5
Bah, c'est Loulibier qui s'est le plus décarcassé, dans cet échange de posts.
Quoique... ni69 il a pas mal assuré aussi, hein ?
Je me placerais personnellement en 3ème position, lol.
Mais bon, il n'y a pas de bonus à la clé, hein ? alors...
Le principal étant que la ou les réponse(s) convienne(nt) à celui qui pose la question.

Tu as bien saisi le concept, royreal, bonne prog' à toi, à +

japee
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
10
Merci Japee !

Cependant j'aimerai savoir quelque-chose : à quoi servent les points qu'on recoit sur le site ?

J'ai beau chercher, je ne trouve pas !
Est-ce que ça a une utilité ?

@+
:)
Bonne Prog'
Nico
Messages postés
11
Date d'inscription
vendredi 1 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2004

Me revoilà ;)

Un truc tout bète mais je galère sur une comparaison de chaine :blush)

la suite de recuperation l'url, voilà mon code :
...
test:=GetURL;
  FOR i:=0 TO ComboBox1.Items.Count DO
  begin
      if test=ComboBox1.Items[i] then
      begin
       flag:='oui';
       showmessage('Déjà présent dans votre sélection '+ test);
       break
      end;
   end;
...


Je fais une comparaison avec le contenu de mon combobox et l'url extraite de ie, mais "test" n'est jamais égal à ma combobox, et ce même si j'ajoute la meme url plusieurs fois ...

Je pige pas pourtant ce sont 2 strings ?!
Si quelqu'un veut gagner des points ;)
je plaisante, merci de m'aider.
Messages postés
323
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
2
Salut,

ton problème vient que tu récupère une valeur de GetURL avec un caractère #0 qui signifie la fin d'un string.

tout d'abord il faut que tu filtres ce caractère à la reception.
modifie la function : GetText

Function GetText(WindowHandle: hwnd):string;
var
txtLength : integer;
buffer: string;
begin
 TxtLength :=  SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0);
 txtlength := txtlength + 1;
 setlength (buffer, txtlength);
 sendmessage (WindowHandle,wm_gettext, txtlength, longint(@buffer[1]));

  Delete(Buffer,Pos(#0,Buffer),1); 

 result : = Buffer;
end;


Afin de simplifier ton code tu peux écrire :
  Test := GetURL;

  // IndexOf te renvois l'index ou ce trouve la valeur rechercher.
  // Si tu as -1 c'est que la valeur n'existe pas.
  if ComboBox1.Items.IndexOf(test) > -1 then
  begin
    flag:='oui';
    showmessage('Déjà présent dans votre sélection '+ test);
  end;


Bonne Prog, ;)

Olivier

PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
Messages postés
11
Date d'inscription
vendredi 1 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2004

Voilà enlever la fin du buffer, ca roule :)

Pour indexof en effet c'est plus optimal et ca évite de faire une boucle, merci à toi :)