28. august 2007 - 10:36Der er
12 kommentarer og 1 løsning
Få svaret over i en richedit fra WebBrowser.navigate
Jeg bruger TWebBrowser til at kalde en www.testsite.dk/start.asp, resultatet vises fint i det tilhørende vindue, men jeg ville gerne have mulighed for at læse resultatet, eller kopiere indholdet over i en RichEdit
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Er det selve HTML koden du vil have fat i? Hvis du ikke har brug for at se resultatet i TWebBrowser findes der en Indy komponent der er bedre til den slags?
Hvis du ved du aldrig skal vise selve siden, ja - men det er ikke det samme som at du ikke kan få fat på den med din TWebBrowser.
Jeg bruger selv følgende kode i et program (kun relevante dele er medtaget):
procedure TForm1.WebBrowser1DocumentComplete2(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); var doc:string; begin ExtractOriginalHTML(TWebBrowser(ASender), doc); end;
procedure TForm1.ExtractOriginalHTML(ASender: TWebBrowser; var doc: string); var buf: TStringStream; PSI: IPersistStreamInit; begin buf := TStringStream.Create(''); try try PSI := IHTMLDocument2(ASender.Document) as IPersistStreamInit; if Succeeded(PSI.Save(TStreamAdapter.Create(Buf), LongBool(True))) then begin Buf.Position := 0; doc := buf.DataString; end else begin raise EStreamError.Create('Error: Document couldn''t be read. Program will quit.'); end; except on e: EStreamError do begin MessageDlg(e.Message, mtError, [mbOK],0); Application.Terminate; end; end; finally Buf.Free; end; end;
hvilket giver den oprindelige HTML, som den blev sendt til browseren.
Jeg kan ikke på stående fod huske hvad der skal ind under Uses for at den finder det nødvendige.
MSHTML og ActiveX, hvis jeg lige ser rigtigt - SHDocVw burde du have i kraft af TWebBrowseren. Men hvis du ved du ikke skal vise selve browseren, er det bedre at bruge Indy som i kroning's løsning.
Kiggede lidt på google og fandt nedenstående svar, som giver den HTML kode der bliver vist i browseren.
procedure TForm1.NyExtractOriginalHTML(ASender: TWebBrowser); var iall : IHTMLElement; begin if Assigned(WebBrowser1.Document) then begin iall := (WebBrowser1.Document AS IHTMLDocument2).body;
while iall.parentElement <> nil do begin iall := iall.parentElement; end; richedit1.Text := iall.outerHTML; end; end;
Nej, det der giver HTML'en som browseren internt repræsenterer det - hvilket er noget anderledes end den egentlige HTML. Min giver koden som den rent faktisk er, dvs. det browseren henter fra serveren.
Hvad er det helt præcist du skal bruge det her til, siden du ikke kan bruge den egentlige HTML?
Jeg skal bruge programmet til at overvåge en IIS server, som lige pludselig fryser uden at der opstår nogen fejl, så hvis jeg får en fejl side, kan jeg udføre en iisreset. Forstår ikke helt din kommentar, da din kode giver indholdet af start.asp og min kode giver den html kode som browseren viser. Men tak for hjælpen, måske det kunne være gjort smartere??
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.