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é
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').
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;
Je balaye avec cette liste de nom de classe
Quelqu'un aurait-il une idée du nom des classes Control de la barre Livebox?
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;
ou une autre idée pour récupérer le texte ...
Merci à tous
Partager