Bonjour,

Afin de tracer un historique des pages visitées par un User, je voudrais récupérer le contenu de la barre de nav de IE.
J'ai trouvé un code sur le site Michel (phidels.com) que j'ai un peu modifié
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
 
procedure TForm1.Button2Click(Sender: TObject);
var
  i:integer;
  HandleWindow,HandleParent,HandleTmp: HWnd;
  Buffer : Array[0..255] of char;
  Explorer,ClientWork,Toolbar,ComboBox,ComboBoxChild,Edit:HWND;
  Mem:integer;
  Resultat:string;
begin
  LstHandle.Clear;
  EnumWindows(@EnumWindowsProc,LongInt(LstHandle));
  for i:=0 to LstHandle.Count-1 do
    begin
      HandleWindow := StrToIntDEF(copy(LstHandle[i],1,pos('-',LstHandle[i])-1),-1);
      if HandleWindow <> -1 then
        begin
          HandleTmp:= HandleWindow;
          HandleParent:= GetWindow(HandleTmp,GW_OWNER);
          while HandleParent <> 0 do
            begin
              HandleTmp:= HandleParent;
              HandleParent:= GetWindow(HandleTmp,GW_OWNER);
            end;
          GetWindowText(HandleTmp,Buffer,255);
          if StrLen(Buffer) <> 0 then
            if pos('internet',lowercase(StrPas(Buffer))) > 0 then
              begin
                memo2.lines.Add(IntToStr(HandleWindow)+' parent: '+IntToStr(HandleTmp)+'-'+StrPas(Buffer));
                //Cherche le Handle de la fenêtre de travail
                ClientWork:=FindWindowEx(HandleTmp,0,'WorkerA',nil);
                if ClientWork=0 then //Compatibilité XP / 98
                  ClientWork:=FindWindowEx(HandleTmp,0,'WorkerW',nil);
                //Retrouve le Handle de la ToolBar
                Toolbar:=FindWindowEx(ClientWork,0,'ReBarWindow32',nil);
                //Cherche le Handle du ComboBox
                ComboBox:=FindWindowEx(Toolbar,0,'ComboBoxEx32', nil);
                ComboBoxChild:=FindWindowEx(ComboBox,0,'ComboBox',nil);
                //Atteint l'Edit et envoie un message pour avoir le texte
                Edit:=FindWindowEx(ComboBoxChild,0,'Edit',nil);
                Mem:=SendMessage(Edit,WM_GETTEXTLENGTH,0,0)+1;
                SetLength(Resultat,Mem);
                //Envoi du message
                SendMessage(Edit,WM_GETTEXT,Mem,Integer(@Resultat[1]));
                memo2.lines.Add(Resultat);
             end;
        end
      else
        memo2.lines.Add(LstHandle[i]+' valeur incorrecte ');
    end;
end;
Malheureusement ce code fonctionne très bien avec IE "normal" mais ne fonctionne pas avec le navigateur installé avec la LiveBox de wanadoo. Après debug je me suis aperçu que le nom de la classe du control contenant la barre de nav ne doit pas être le même ('ReBarWindow32').

Je balaye avec cette liste de nom de classe
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
procedure LoadLstClassControlName(var LstClassControlName:TStringList);
begin
  LstClassControlName.Clear;
  LstClassControlName.add('Button');
  LstClassControlName.add('ButtonListBox');
  LstClassControlName.add('Combobox');
  LstClassControlName.add('ComboLBox');
  LstClassControlName.add('ComboBoxEx32');
  LstClassControlName.add('Edit');
  LstClassControlName.add('Listbox');
  LstClassControlName.add('msctls_trackbar32');
  LstClassControlName.add('msctls_updown32');
  LstClassControlName.add('msctls_progress32');
  LstClassControlName.add('msctls_hotkey32');
  LstClassControlName.add('msctls_statusbar32');
  LstClassControlName.add('NativeFontCtl');
  LstClassControlName.add('ReBarWindow32');
  LstClassControlName.add('ScrollBar');
  LstClassControlName.add('Static');
  LstClassControlName.add('SysAnimate32');
  LstClassControlName.add('SysDateTimePick32');
  LstClassControlName.add('SysHeader32');
  LstClassControlName.add('SysLink');
  LstClassControlName.add('SysListView32');
  LstClassControlName.add('SysMonthCal32');
  LstClassControlName.add('SysTreeView32');
  LstClassControlName.add('SysTabControl32');
  LstClassControlName.add('SysIPAddress32');
  LstClassControlName.add('SysPager');
  LstClassControlName.add('ToolbarWindow32');
  LstClassControlName.add('tooltips_class32');
  LstClassControlName.add('WorkerA');
  LstClassControlName.add('WorkerW');
end;
Quelqu'un aurait-il une idée du nom des classes Control de la barre Livebox?
ou une autre idée pour récupérer le texte ...

Merci à tous