Recuperer l'url de navigation

Résolu
royreal Messages postés 11 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 24 octobre 2004 - 19 oct. 2004 à 19:36
royreal Messages postés 11 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 24 octobre 2004 - 21 oct. 2004 à 21:38
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

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
20 oct. 2004 à 01:55
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
3
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
19 oct. 2004 à 23:12
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 ! :)
0
royreal Messages postés 11 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 24 octobre 2004
20 oct. 2004 à 00:01
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.
0
Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
20 oct. 2004 à 08:28
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
royreal Messages postés 11 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 24 octobre 2004
20 oct. 2004 à 10:55
Merci encore :)

Valider "reponse acceptée", ca l'air vous tenir à coeur, why, il y'a des bonus à gagner ;)
0
Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
20 oct. 2004 à 11:58
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.
0
royreal Messages postés 11 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 24 octobre 2004
20 oct. 2004 à 19:36
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 ;)
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
21 oct. 2004 à 01:43
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
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
21 oct. 2004 à 17:52
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
0
royreal Messages postés 11 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 24 octobre 2004
21 oct. 2004 à 19:51
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.
0
Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
21 oct. 2004 à 20:09
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.
0
royreal Messages postés 11 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 24 octobre 2004
21 oct. 2004 à 21:38
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 :)
0
Rejoignez-nous