Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Wie Alle Links aus dem Aktiven IE Fenster auslesen? (https://www.delphipraxis.net/20276-wie-alle-links-aus-dem-aktiven-ie-fenster-auslesen.html)

jonny 15. Apr 2004 13:30


Wie Alle Links aus dem Aktiven IE Fenster auslesen?
 
Ich hab hier mal ein Procedure mit der ich Alle Links aus dem zuletzt geöffneten IE Fenster bekommen kann, kann mir einer verraten wie ich die Links aus dem zuletzt aktiven und nicht zuletzt geöffneten IE Fenster bekomme?

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  u : variant;
  v : IDispatch;
  s : string;
  ShellWindow: IShellWindows;
  WB: IWebbrowser2;
  spDisp: IDispatch;
  IDoc1: IHTMLDocument2;
  k: Integer;

  procedure RecurseLinks(htmlDoc: variant);
  var
    BodyElement : variant;
    ElementCo: variant;
    HTMLFrames: variant;
    HTMLWnd : variant;
    j, i : integer;
  begin
    try
      if VarIsEmpty(htmlDoc) then
        exit;
      BodyElement := htmlDoc.body;
      if BodyElement.tagName = 'BODY' then
      begin
        ElementCo := htmlDoc.links;
        j := ElementCo.Length - 1;
        for i := 0 to j do
        begin
          u := ElementCo.item(i);
          s := u.href;
          If ((Copy(s, 1, 7) = 'http://') or (Copy(s, 1, 6) = 'ftp://'))
             and (S[Length(S)] <> '/') Then
            listLinks.Items.Add(s);
        end;
      end;
      HTMLFrames := htmlDoc.Frames;
      j := HTMLFrames.length - 1;
      for i := 0 to j do
      begin
        HTMLWnd := HTMLFrames.Item(i);
        RecurseLinks(HTMLWnd.Document);
      end;
    except
    end;
  end; // RecurseLinks

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
         v := WB.Document;
         listLinks.Clear;
         RecurseLinks(v);
       end;
     end;
   end;
 end;
end;

toms 15. Apr 2004 16:49

Re: Wie Alle Links aus dem Aktiven IE Fenster auslesen?
 
Hi,

Das könnte ein wenig schwierig werden.
Nehmen wir mal an, jemand hat mehrere IE Instanzen gestartet,
wechselt dann z.B zur Instanz, welche zuerst geöffnet wurde und wechselt dann ins Winword.
Nun möchtest du deinen Code ausführen. Das aktive Fenster ist Winword.

Vielleicht müsstest du die "Alt+Tab"-Reihenfolge herauskriegen.

jonny 15. Apr 2004 17:09

Re: Wie Alle Links aus dem Aktiven IE Fenster auslesen?
 
Mann muss doch irgendwie alle anwendungen die gestartet sind so auslesen können wie sie aktiviert wurden, oder?

toms 15. Apr 2004 17:21

Re: Wie Alle Links aus dem Aktiven IE Fenster auslesen?
 
Die Alt-Tab Reihenfolge wird glaub nach dem Z-Order bestimmt.
Vielleicht kannst du GetNextWindow() + GW_HWNDPREV solange aufrufen, bis
die letzt aktive IE Instanz kommt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:55 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