Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi wissen wenn twebbrowser fertig geladen hat (https://www.delphipraxis.net/104694-wissen-wenn-twebbrowser-fertig-geladen-hat.html)

o0o 9. Dez 2007 11:06


wissen wenn twebbrowser fertig geladen hat
 
hi leutz,...also ich hab wiedermal ein kleines problem:)

wie bekomme ich raus wenn der twebbrowser fertig geladen hat?
ich meine wenn es entgueltig ist inkl. frames^^

ich habs mit NavigateComplete und DocumentComplete versucht nur leider kein erfolg denn wenn ich das drin habe und das zb mit showmessage verknuepfe bekomme ich massig meldungen aufeinmal._.

ich weiss nich wieso aber ich glaube es haengt an den frames,...was denkt ihr denn oder habt ihr bessergesagt ne andere moeglichkeit auf lager?^^

thx an alle die sich ein wenig zeit nehmen;)

o0o

thkerkmann 9. Dez 2007 11:37

Re: wissen wenn twebbrowser fertig geladen hat
 
Hi,

das ist genau richtig, du bekommst für jeden einzelnen Frame ein DocumentComplete Event.

Es gibt kein Event, was dir sagt, dass die ganze Seite komplett ist.
Möglicherweise könntest Du im OnBeforeNavigate einen Zähler hochzählen, und im DocumentComplete wieder runter,
wenn er dann 0 ist, ist alles da.

Versuch macht klug...

Gruss

o0o 9. Dez 2007 11:48

Re: wissen wenn twebbrowser fertig geladen hat
 
0_o keine schlechte idee:D

echt daran hab ich garnich gedacht^^
thx ich versuchs mal, wenn jedoch jemand anders ne andere idee hat waere nich uebel,...da die frames denk ich mal nich ueberall gleiche anzahl habn(mein geiler email provider:D)

da o0o

thkerkmann 9. Dez 2007 11:57

Re: wissen wenn twebbrowser fertig geladen hat
 
Zitat:

Zitat von o0o
0_o keine schlechte idee:D

echt daran hab ich garnich gedacht^^
thx ich versuchs mal, wenn jedoch jemand anders ne andere idee hat waere nich uebel,...da die frames denk ich mal nich ueberall gleiche anzahl habn(mein geiler email provider:D)

da o0o

Die Anzahl ist doch völlig egal. Es wird ja auch für jeden Frame ein OnBeforeNavigate ausgelöst. d.h.
wenn 2 Frames:

OnBeforeNavigate: counter := counter +1
OnBeforeNavigate: counter := counter +1
OnNavigateComplete: counter := counter -1
OnNavigateComplete: counter := counter -1

macht am Ende immer 0

egal wieviele Frames.

RWarnecke 9. Dez 2007 13:24

Re: wissen wenn twebbrowser fertig geladen hat
 
Zitat:

Zitat von o0o
ich habs mit NavigateComplete und DocumentComplete versucht nur leider kein erfolg denn wenn ich das drin habe und das zb mit showmessage verknuepfe bekomme ich massig meldungen aufeinmal._.

Was für Meldungen kommen. Ich glaube, dass ein ShowMessage nicht gerade geeignet ist für das Ereigniss DocumentComplete. Schaue Dir mal diese Funktion an.
Delphi-Quellcode:
procedure TForm12.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  if (WebBrowser1.LocationURL = ComboBox1.Text) and (not FirstEdit) then
  begin
    Counter := 0;
    Btn_Addr.Enabled := True;
  end;
  if FirstEdit then
  begin
    Counter := Counter + 1;
    if Counter > Memo1.Lines.Count - 1 then
    begin
      if mailcounter <= ComboBox1.Items.Count - 1 then
        mailcounter := mailcounter + 1;
      FirstEdit := False;
      WebBrowser1.Navigate('https://www.domain.de/test.php');
      ComboBox1.Text := ComboBox1.Items.Strings[mailcounter];
    end
    else
    begin
      Label1.Caption := 'Adresse : ' + IntToStr(Counter) + ' von ' + IntToStr(Memo1.Lines.Count);
      Webbrowser1.OleObject.document.forms.item(0).elements.item('black_mail').value := memo1.Lines.Strings[counter];
      Application.ProcessMessages;
      WebBrowser1.OleObject.Document.GetElementsByName('bname_add').Item(0).Click;
    end;
  end;
end;
Diese Funktion liest in einem Memo Zeile für Zeile aus und gibt das an ein Eingabefeld auf der Webseite und führt dann den Senden-Button aus.

o0o 9. Dez 2007 16:13

Re: wissen wenn twebbrowser fertig geladen hat
 
@RWarnecke
hmm mit deinem source kann ich iwi nix anfangen ich versteh ihn innerlich nichso^^
aber was noch besser ist ist zu wissen was im frame steht^^
dazu das
Delphi-Quellcode:
procedure TWebForm.DemoButtonClick(Sender: TObject);
var
  doc: IHTMLDocument2;
  win: IHTMLWindow2;
  fc: IHTMLFramesCollection2;
  u: IUnknown;
  i: Integer;
  v: OleVariant;
begin
  doc := WebBrowser.Document as IHTMLDocument2;
  fc := doc.frames;
  ShowMessage(Format('frames detected: %d', [fc.Length]));
  for i := 0 to Pred(fc.length) do
  begin
    v := i;
    u := fc.item(v);
    if u.QueryInterface(IHTMLWindow2, win) = 0 then
      ShowMessage(win.document.body.innerHTML)
  end;
end;

ok also er zeigt mir den source von meinem lieben frame nur ich bekomme noch en error "access denied"
weiss jemand wie ich das wieder klar bekomme ohne error?

thx o0o

inherited 9. Dez 2007 18:58

Re: wissen wenn twebbrowser fertig geladen hat
 
[ot]du könntest iwie versuchen ma komplette wörter zu schreibn un vllt n bissel mehr deutsch und weniger inet-slang o_O kthxbye.[/ot]

DeddyH 9. Dez 2007 19:36

Re: wissen wenn twebbrowser fertig geladen hat
 
[ot] Begging for translation :gruebel: (oder schreiben wir demnächst gleich in leet?)[/ot]

o0o 10. Dez 2007 00:13

Re: wissen wenn twebbrowser fertig geladen hat
 
tut mir leid wenn euch mein eigendlicher schreibstil nicht so besonders zusagt...0_o
aber ok wenn euch das so auf den sack geht versuche ich es mal wie ein "normaler".

aber leutz achtet doch bitte nicht auf meinen slang^^,...eher wie ich diese felermeldung aus meinem codeschnipsel oben rausbekomme,...waere euch sehr verbunden:)

btw in 1337 zu kommunizieren wuerde selbst ich nicht mithalten da ich dann mit kopfschmerzen vom raetseln auf dem boden waelze;)

da o0o


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz