HTML aus InternetExplorer auslesen
Hallo,
damit ich kontrollieren kann, welcher Inhalt gerade in den IE geladen ist, bräuchte ich den Zugriff auf den angezeigten HTML-Text des IE. Dazu habe ich mir über Spywin die Handles ermittelt und es mit folgendem Code versucht:
Delphi-Quellcode:
Leider bringt mit schon die SendMessage(wndChild,WM_GETTEXTLENGTH,0,0)-Funktion den Wert "0" (Size also "1") zurück. Ich denke, dass es mit "WM_GETTEXTLENGTH" und "WM_GETTEXT" nicht geht, habe aber keine Ahnung wie sonst. Ich bin leider in der Programmierung mit direkten Windowsfunktionen unerfahren.
procedure TAppForm.Button1Click(Sender: TObject);
var wndMain, wndChild: HWND; Size: Integer; PText: PChar; begin wndMain := FindWindow('IEFrame','Google - Microsoft Internet Explorer'); if wndMain <> 0 then begin wndChild := FindWindowEx(wndMain, 0, 'Shell DocObject View', nil); wndChild := FindWindowEx(wndChild, 0, 'Internet Explorer_Server', nil); if wndChild <> 0 then begin Size := SendMessage(wndChild,WM_GETTEXTLENGTH,0,0)+1; PText := AllocMem(Size); try if SendMessage(wndChild,WM_GETTEXT,wParam(Size),lParam(PText)) > 0 then begin ShowMessage(PText); end; finally FreeMem(PText,Size); end; end; end; end; |
Re: HTML aus InternetExplorer auslesen
Hier mal 2 Seiten, um dich etwas einzulesen, und zu erfahren welche Schnittstelle du wohl benutzen mußt:
http://www.swissdelphicenter.com/de/showcode.php?id=373 http://www.swissdelphicenter.ch/de/showcode.php?id=1607 |
Re: HTML aus InternetExplorer auslesen
|
Re: HTML aus InternetExplorer auslesen
|
Re: HTML aus InternetExplorer auslesen
Vielen Dank für Euere Hilfe.
Ich kann den vorgeschlagenen Code erst kommende Woche wirklich testen. Gruss Siegl |
Re: HTML aus InternetExplorer auslesen
Hallo,
ich habe die vorgeschlagenen Codes angetestet. Dabei ist mir das Problem aufgetreten, dass "ovElements.item(i).Value" (s.u.) einfach nicht funktionieren will. Der Code ist von swissdelphicenter.ch. Ich benutze XP und Delphi7.
Delphi-Quellcode:
Eine Zusatzfrage hätte ich noch: Z.Z. erzeuge ich eine Timer-Instanz und prüfe jede Sekunde mit "FindWindow", ob das Programmfenster des IE gestartet wurde. Gibt es eine Windowsbotschaft, die das Erzeugen/Wechseln eines Fensters mitteilt? Das wäre dann eine sauberere Lösung.
uses
MSHTML_TLB; // first navigate to tipspage procedure TForm1.Button1Click(Sender: TObject); begin Webbrowser1.Navigate('http://www.swissdelphicenter.ch/en/tipsuchen.php'); end; // Try to access IE instance and fill out the search field with // a text and click the search button procedure TForm1.Button3Click(Sender: TObject); var hIE: HWND; ShellWindow: IShellWindows; WB: IWebbrowser2; spDisp: IDispatch; IDoc1: IHTMLDocument2; Document: Variant; k, m: Integer; ovElements: OleVariant; i: Integer; begin ShellWindow := CoShellWindows.Create; // get the running instance of Internet Explorer for k := 0 to ShellWindow.Count do begin spDisp := ShellWindow.Item(k); if spDisp = nil then Continue; // QueryInterface determines if an interface can be used with an object spDisp.QueryInterface(iWebBrowser2, WB); if WB <> nil then begin WB.Document.QueryInterface(IHTMLDocument2, iDoc1); if iDoc1 <> nil then begin WB := ShellWindow.Item(k) as IWebbrowser2; begin Document := WB.Document; // count forms on document and iterate through its forms for m := 0 to Document.forms.Length - 1 do begin ovElements := Document.forms.Item(m).elements; // iterate through elements for i := 0 to ovElements.Length - 1 do begin // when input fieldname is found, try to fill out try if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and (CompareText(ovElements.item(i).type, 'text') = 0) then begin ovElements.item(i).Value := 'FindWindow'; // .Value funktioniert nicht !!!! end; except end; // when Submit button is found, try to click try if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and (CompareText(ovElements.item(i).type, 'SUBMIT') = 0) and (ovElements.item(i).Value = 'Search') then // Suchen für German // .Value funktioniert nicht !!!! begin ovElements.item(i).Click; end; except end; end; end; end; end; end; end; end; Vielen Dank im voraus, Gruß Siegl |
Re: HTML aus InternetExplorer auslesen
Hallo,
kann mir da wirklich keiner weiterhelfen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 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