AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi HTML aus InternetExplorer auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

HTML aus InternetExplorer auslesen

Ein Thema von Siegl · begonnen am 10. Apr 2010 · letzter Beitrag vom 14. Apr 2010
Antwort Antwort
Siegl

Registriert seit: 8. Apr 2010
18 Beiträge
 
#1

HTML aus InternetExplorer auslesen

  Alt 10. Apr 2010, 10:12
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:
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;
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#2

Re: HTML aus InternetExplorer auslesen

  Alt 10. Apr 2010, 10:17
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

Re: HTML aus InternetExplorer auslesen

  Alt 10. Apr 2010, 10:18
Diese Links sollten Dir weiterhelfen :

Link 1
Link 2
Link 3
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: HTML aus InternetExplorer auslesen

  Alt 10. Apr 2010, 11:31
Klick mich!
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Siegl

Registriert seit: 8. Apr 2010
18 Beiträge
 
#5

Re: HTML aus InternetExplorer auslesen

  Alt 10. Apr 2010, 20:08
Vielen Dank für Euere Hilfe.

Ich kann den vorgeschlagenen Code erst kommende Woche wirklich testen.

Gruss Siegl
  Mit Zitat antworten Zitat
Siegl

Registriert seit: 8. Apr 2010
18 Beiträge
 
#6

Re: HTML aus InternetExplorer auslesen

  Alt 11. Apr 2010, 10:04
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:
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;
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.

Vielen Dank im voraus,

Gruß Siegl
  Mit Zitat antworten Zitat
Siegl

Registriert seit: 8. Apr 2010
18 Beiträge
 
#7

Re: HTML aus InternetExplorer auslesen

  Alt 14. Apr 2010, 15:14
Hallo,

kann mir da wirklich keiner weiterhelfen?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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