![]() |
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; |
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. |
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?
|
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 03:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz