Moin,
okay eine kleineerläuterung hilft wohl
Also es geht um ein Websurf-Protokoll-Tool.
Ein User surft mit dem TWebbrowser über eine beliebige Seite,
zum Beispiel
www.Aldi.de. Im Hintergrund lasse ich einen Timer
mitlaufen, der alle 100 ms die Mauskoordinaten und die angezeigte
Seite,inklusive Frames und SubFrames und derren Subframes wegspeichert.
BSP eines Datensatzes ohne Frames:
----------------------------------------------------------
560 # mausX
370 # mausY
http://www.aldi.de/ #TWebbrowser.URL
0 # Anzahl Frames
----------------------------------------------------------
BSP eines Datensatzes mit Frames:
----------------------------------------------------------
1644 # mausX
255 # mausY
http://germany.aldi.com/cms/ #TWebbrowser.URL
5 # Anzahl Frames
http://germany.aldi.com/cms/frameset/blank.html #Frame 1
top # FrameName 1
0 # Anzahl Subframes in Frame 1
http://germany.aldi.com/cms/frameset/blank_1.html # Frame 2
left
0
http://germany.aldi.com/cms/home.html # Frame 3
content
0
http://germany.aldi.com/cms/frameset/blank_3.html # Frame 4
right
0
http://germany.aldi.com/cms/frameset/blank_2.html # Frame 5
bottom
0
----------------------------------------------------------
Das Wegspeichern ist easy-going 8)
Dann kommt der eigentliche Spass, um zu sehen wo lang er gesurft ist,
brauche ich halt das Tool. Ich bastel mir einen Form mit TWebbrowser
und lese alle 100ms die einen Datensatz ein und mache dann:
1. Setzen der Maus (easy)
2. Laden der TWebbrowser.URL, sofern nicht schon geladen
3. Laden der Frames (sofern nicht schon geladen)
4. Laden der Subframes (sofern nicht schon geladen)
Am Ende kann man sich halt das Surfverhalten des Users anschauen als
eine Art Video!
Geht auch gut, aber sobald Subframes im Spiel sind funzt es nicht mehr
Hast du eine bessere Lösung oder mache ich da strukturell einen Fehler?
Hier die Timer Routine (Auszug)
Delphi-Quellcode:
doki,dok,flag,ole_index : OleVariant;
Readln(F, x);
Readln(F, y);
Readln(F, doc);
Readln(F, MouseState);
Readln(F, frame_anz);
//Cursor setzten
//Webseite laden
if (doc <> old_doc) then
begin
doki := doc;
WebBrowser1.Navigate2(doki);
old_doc := doc;
end;
document := WebBrowser1.document as IHTMLDocument2;
if (strtoint(frame_anz) >= 1) then // Seite hat Frames
for i:=0 to (strtoint(frame_anz)-1) do
begin
ole_index := i;
Readln(F, frame);
Readln(F, Frame_name);
Readln(F, frame_in_frame_anz);
frame_n := frame_name;
doki2 := frame;
// Frames laden
WebBrowser1.Navigate2(doki2,flag,frame_n);
//SubFrames laden
for j:=0 to (strtoint(frame_in_frame_anz)-1) do
begin
ole_index2 := j;
Readln(F,frame_in_frame_url);
Readln(F, Frame_name);
frame_n := Frame_name;
doki2 := frame_in_frame_url;
WebBrowser1.Navigate2(doki2,flag,frame_n);
end;
end;