AGB  ·  Datenschutz  ·  Impressum  







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

URLs aus Firefox-Instanzen auslesen

Offene Frage von "Wannabe"
Ein Thema von Wannabe · begonnen am 18. Feb 2005 · letzter Beitrag vom 25. Apr 2009
Antwort Antwort
Seite 1 von 3  1 23      
Wannabe

Registriert seit: 18. Feb 2005
13 Beiträge
 
#1

URLs aus Firefox-Instanzen auslesen

  Alt 18. Feb 2005, 22:14
Hallo,

ich arbeite zur Zeit an einem Programm dass letztendlich einmal eine Art von persönlichem, zentralem "Internetcenter" darstellen soll, sprich mit eigenem Browser und maximaler Konfigurierbarkeit, erweiterten Möglichkeiten zur Verwaltung von Favoriten, Verlauf etc.

Im Moment sitze ich gerade daran einen zentralen Verlauf zu programmieren der so funktionieren soll dass er mitliest welche URLs aufgerufen werden und diese nach Bedarf - je nach Einstellung - abspeichert, verschiebt oder auch erst konfiguriert und dann abspeichert. Für den IE habe ich zum Auslesen der URLs aller Instanzen folgende Methode benutzt:

Code:
uses shdocvw;

procedure TForm1.Button2Click(Sender: TObject);
var
  x: Integer;
  Sw: IShellWindows;
begin
  sw := CoShellWindows.Create;
  for x := 0 to SW.Count - 1 do
    Listbox1.Items.Add((Sw.Item(x) as IWebbrowser2).LocationUrl);
end;
Das Ganze funktioniert auch reibungslos, jedoch leider nur für den IE. Da aber ebenso der Firefox weitverbreitet ist möchte ich das selbe für diesen Browser implementieren, finde dazu jedoch keinen Ansatz.

Weiß jemand Rat ?
  Mit Zitat antworten Zitat
Wannabe

Registriert seit: 18. Feb 2005
13 Beiträge
 
#2

Re: URLs aus Firefox-Instanzen auslesen

  Alt 21. Feb 2005, 21:58
Hat denn niemand eine Idee

Ich habe zum Auslesen von URLs des Internet Explorer noch folgenden Quellcode gefunden:

Delphi-Quellcode:
uses
  ActiveX, Shdocvw_tlb, MSHTML_TLB;

type
  TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; WPARAM: wParam;
  out pObject): HRESULT; stdcall;

function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT;
var
  hInst: HWND;
  lRes: Cardinal;
  MSG: Integer;
  pDoc: IHTMLDocument2;
  ObjectFromLresult: TObjectFromLresult;
begin
  hInst := LoadLibrary('Oleacc.dll');
  @ObjectFromLresult := GetProcAddress(hInst, 'ObjectFromLresult');
  if @ObjectFromLresult <> nil then begin
    try
      MSG := RegisterWindowMessage('WM_HTML_GETOBJECT');
      SendMessageTimeOut(WHandle, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
      Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc);
      if Result = S_OK then
        (pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp, IWebbrowser2, IE);
    finally
      FreeLibrary(hInst);
    end;
  end;
end;

procedure GetIEWindows(lb: TListBox);
  function EnumWindowsProc (Wnd: HWND; lb: TListBox): BOOL; stdcall;
  var
    theClassname: array [0..128] of Char;
    caption: Array [0..128] of Char;
    IE: IWebbrowser2;
    WndChild: HWND;
  begin
    Result := True;
    Windows.GetClassname( Wnd, theClassname, Sizeof( theclassname ));
    if theClassname='IEFramethen
    begin
      WndChild := FindWindowEX(Wnd, 0, 'Shell DocObject View', nil);
      if WndChild <> 0 then
      begin
        WndChild := FindWindowEX(WndChild, 0, 'Internet Explorer_Server', nil);
        if WndChild <> 0 then
        begin
          if GetIEFromHWND(WndChild, IE)=S_OK then
            if IE<>nil then
              lb.Items.Add(IE.LocationURL);
        end;
      end;
    end;
  end;
begin
  lb.Clear;
  EnumWindows(@EnumWindowsProc, integer(lb));
end;
Aufrufen kann man dann ganz einfach über

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  GetIEWindows(ListBox1);
end;
Allerdings funktioniert das Ganze wieder nur für den IE Würde es vielleicht funktionieren wenn man das 'Internet Explorer_Server' durch den Namen des Firefox ersetzen würde ? 'Firefox' und 'Mozilla Firefox' haben jedenfalls nicht geklappt
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: URLs aus Firefox-Instanzen auslesen

  Alt 21. Feb 2005, 22:00
Zitat von Wannabe:
Allerdings funktioniert das Ganze wieder nur für den IE
Ist ja auch irgendwie logisch. Du benutzt ja auch das ActiveX bzw. die Typbibliothek des IE.

Aber ich meine, wir hatten das schon mal mit dem Firefox. Benutzt mal die Forensuche.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Wannabe

Registriert seit: 18. Feb 2005
13 Beiträge
 
#4

Re: URLs aus Firefox-Instanzen auslesen

  Alt 23. Feb 2005, 16:44
Zitat von Luckie:
Zitat von Wannabe:
Allerdings funktioniert das Ganze wieder nur für den IE
Ist ja auch irgendwie logisch. Du benutzt ja auch das ActiveX bzw. die Typbibliothek des IE.

Aber ich meine, wir hatten das schon mal mit dem Firefox. Benutzt mal die Forensuche.
Hi Luckie,

ich habe die Forensuche mit "Firefox AND URL" gefüttert, allerdings in den Ergebnissen nicht wirklich etwas passendes gefunden.
Bist du sicher dass es schon einmal etwas in der Richtung in diesem Forum gab ?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: URLs aus Firefox-Instanzen auslesen

  Alt 23. Feb 2005, 16:48
Hi,

Probiere mal diese Funktion:

Delphi-Quellcode:
procedure GetCurrentURL(out URL, Title: string);
var
   DDEClient : TDDEClientConv;
   p, q: PChar;
   i: Integer;
begin
   DDEClient := TDDEClientConv.Create(nil);
   try
     with DDEClient do if SetLink('IExplore', 'WWW_GetWindowInfo') or
       SetLink('Netscape', 'WWW_GetWindowInfo') or
       SetLink('Mosaic', 'WWW_GetWindowInfo') or
       SetLink('Netscp6', 'WWW_GetWindowInfo') or
       SetLink('Mozilla', 'WWW_GetWindowInfo') or
       SetLink('Firefox', 'WWW_GetWindowInfo') then
       p := RequestData('0xFFFFFFFF')
     else raise Exception.Create('Could not establish browser DDE link');
     if Assigned(p) then try
       q := p;
       Assert(q^ = '"');
       SetLength(URL, StrLen(q));
       Inc(q);
       i := 0;
       while q^ <> '"do begin
         if (q^ = '\') and (q[1] = '"') then Inc(q);
         Inc(i);
         URL[i] := q^;
         Inc(q);
       end;
       SetLength(URL, i);
       SetLength(Title, StrLen(q));
       i := 0;
       Inc(q, 3);
       while q^ <> '"do begin
         if (q^ = '\') and (q[1] = '"') then Inc(q);
         Inc(i);
         Title[i] := q^;
         Inc(q);
       end;
       SetLength(Title, i);
     finally
       StrDispose(p);
     end else raise Exception.Create('Could not fetch browser data');
   finally
     DDEClient.Free;
   end;
end;
Thomas
  Mit Zitat antworten Zitat
Wannabe

Registriert seit: 18. Feb 2005
13 Beiträge
 
#6

Re: URLs aus Firefox-Instanzen auslesen

  Alt 6. Mär 2005, 19:28
Hi,

super, die Procedure funktioniert
Habe sie nur etwas umgeändert damit das Programm nicht beendet wird wenn kein Browser offen ist.

Nun versuche ich gerade die Prozedur so umzustellen, dass alle Instanzen ausgelesen werden. Klappt aber noch nicht so wirklich
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: URLs aus Firefox-Instanzen auslesen

  Alt 6. Mär 2005, 20:50
Welche Units muss man einbinden, damit es auch mit dem Kompilieren klappt.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Wannabe

Registriert seit: 18. Feb 2005
13 Beiträge
 
#8

Re: URLs aus Firefox-Instanzen auslesen

  Alt 6. Mär 2005, 21:18
Zitat von sniper_w:
Welche Units muss man einbinden, damit es auch mit dem Kompilieren klappt.
Die "ddeman"-Unit.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: URLs aus Firefox-Instanzen auslesen

  Alt 6. Mär 2005, 21:20
Danke.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#10

Re: URLs aus Firefox-Instanzen auslesen

  Alt 6. Mär 2005, 21:23
Zitat:
Im Moment sitze ich gerade daran einen zentralen Verlauf zu programmieren der so funktionieren soll dass er mitliest welche URLs aufgerufen werden und diese nach Bedarf - je nach Einstellung - abspeichert, verschiebt oder auch erst konfiguriert und dann abspeichert.
Ich würde das mit einem Proxy machen, der zwischen Router und LAN steht. Kostet wenig (irgendein alter Rechner, Linux + Squid drauf, fertig)und bietet eine hohe Sicherheit. Bei Bedarf kannst du so auch Seiten sperren und div. andere Spielereien machen.
Lukas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 04:29 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