Discussion:
URL von Firefox auslesen
(zu alt für eine Antwort)
A.Schneider
2005-08-10 12:41:18 UTC
Permalink
Hi,

wie kann ich mit FindWindow oder ähnlichem die URL beim Firefox
herausbekommen?
Beim IE geht's relativ einfach , aber beim Firefox finde ich kein Handle
für die Combobox :-(

Danke schonmal

Andreas
Harald Krekeler
2005-08-10 13:55:21 UTC
Permalink
Post by A.Schneider
wie kann ich mit FindWindow oder ähnlichem die URL beim Firefox
herausbekommen?
Hallo Andreas,
das Problem kenne ich noch gut. Siehe dazu die Antworten
auf meine Frage "URL vom Firefox-Browser lesen" vom 14. Februar.
Die Lösung liegt in DDE-Abfragen.

Gruß, Harald
--
Softwarebüro Krekeler http://www.krekeler.de
Dokumentenmanagement mit dem Office Manager Pro
A.Schneider
2005-08-10 15:32:33 UTC
Permalink
Post by Harald Krekeler
das Problem kenne ich noch gut. Siehe dazu die Antworten
auf meine Frage "URL vom Firefox-Browser lesen" vom 14. Februar.
Die Lösung liegt in DDE-Abfragen.
Gruß, Harald
Hab ich gelesen, ich dachte mir schon, daß es beim Firefox nicht mit
Findwindow geht, da schienbar keine Childs existieren :-(
Geht das Setzen der URL dann auch über DDE?

Andreas
Michael Valentiner-Branth
2005-08-11 07:30:50 UTC
Permalink
Post by A.Schneider
Geht das Setzen der URL dann auch über DDE?
Ja.

Beim Auslesen mit FindWindow ist IMHO problematisch, daß die dort
stehende URL nicht unbedingt der aktuell geladenen Seite entsprechen
muß. Z.B. weil der Benutzer schon eine andere eingetippt hat, und/oder
die neu eingetippte nicht geladen werden konnte.

Gruß
Michael
--
bookkey - Bookmarks by Keywords.
Bookmark manager with a new way to handle a large number of keywords.
http://www.bookkey.com
Simon Reinhardt
2005-08-11 07:54:12 UTC
Permalink
Post by Michael Valentiner-Branth
Post by A.Schneider
Geht das Setzen der URL dann auch über DDE?
Ja.
Beim Auslesen mit FindWindow ist IMHO problematisch, daß die dort
stehende URL nicht unbedingt der aktuell geladenen Seite entsprechen
muß. Z.B. weil der Benutzer schon eine andere eingetippt hat, und/oder
die neu eingetippte nicht geladen werden konnte.
FindWindow etc. funktioniert bei dem Firefox-URL-Control so oder so
nicht.


Simon
--
Don't panic

Homepage: http://www.picsoft.de
Delphi Fundgrube: http://www.delphi-fundgrube.de
Michael Valentiner-Branth
2005-08-12 08:43:00 UTC
Permalink
Post by Simon Reinhardt
Post by Michael Valentiner-Branth
Beim Auslesen mit FindWindow ist IMHO problematisch, daß die dort
stehende URL nicht unbedingt der aktuell geladenen Seite entsprechen
muß.[...]
FindWindow etc. funktioniert bei dem Firefox-URL-Control so oder so
nicht.
Auch bei anderen Browsern kann eine falsche URL in dem URL-Control stehen.
Deswegen hatte ich darauf hingewiesen.

Gruß
Michael
--
bookkey - Bookmarks by Keywords.
Bookmark manager with a new way to handle a large number of keywords.
http://www.bookkey.com
A.Schneider
2005-08-11 22:22:24 UTC
Permalink
Post by Michael Valentiner-Branth
Post by A.Schneider
Geht das Setzen der URL dann auch über DDE?
Ja.
Beim Auslesen mit FindWindow ist IMHO problematisch, daß die dort
stehende URL nicht unbedingt der aktuell geladenen Seite entsprechen
muß. Z.B. weil der Benutzer schon eine andere eingetippt hat, und/oder
die neu eingetippte nicht geladen werden konnte.
Gruß
Michael
Ich habe das Gefühl, das Ganze funzt nicht wirklich gut.
Wie kann ich an das richtige Firefox Fenster senden? Ich denke mal ich
muss PokeData verwenden - richtig?
Also zum Beispiel beim IE suche ich mir das aktuelle aktive Fenster
Handle und kann dem IE dann entsprechend die URL senden. Über DDE
bekomme ich das irgendwie nicht hin. :-( Ich kann ja da nicht an ein
Handle senden. Irgendwie verstehe ich die Funktionsweise der DDE
Geschichte nicht. Kasnn mir das mal jemand erklären?

Danke schonmal

Andreas
Michael Valentiner-Branth
2005-08-12 08:43:01 UTC
Permalink
Post by A.Schneider
Wie kann ich an das richtige Firefox Fenster senden?
Du sendest nicht an ein Firefox-Fenster, sondern an den
Firefox-DDE-Dienst, der im Hintergrund läuft.
Meine Funktion dafür (auf Firefox spezialisiert):
---
function DDEgetURLfromFirefox : WideString;
var
aw : PChar;
DDEdienst, DDEtopic, DDEmessage : string;
DDEconv : TDdeClientConv;
begin
Result := '';

DDEconv := TDdeClientConv.create(frmApp);
TRY
DDEdienst := 'Firefox';
DDEtopic := 'WWW_GetWindowInfo';
DDEmessage := '0xFFFFFFFF';

if DDEconv.SetLink(DDEdienst, DDEtopic) then begin
aw := DDEconv.RequestData(DDEmessage);
Result := StrPas(aw);
StrDispose(aw);
DDEconv.CloseLink;
end
else SD2(DDEdienst, 'konnte DDE nicht öffnen');
FINALLY
DDEconv.Free;
END;
end;
---
Der Antwort-String enthält URL und Titel.
Post by A.Schneider
Also zum Beispiel beim IE suche ich mir das aktuelle aktive Fenster
Handle und kann dem IE dann entsprechend die URL senden.
Beim IE nutze ich möglichst COM:
---
function COMgetURLfromIE(BrowserPath: WideString;
var Titel: WideString) : WideString;
var
i : Integer;
ShWindows : ShellWindows;
IE : InternetExplorer;
Dok : OLEVariant;
begin
Result := '';

SHWindows:= CoShellWindows.Create;

for i:=0 to (ShWindows.Count-1) do begin
IE := SHWindows.item(i) as InternetExplorer;

if (WideCompareText(IE.FullName, BrowserPath)=0) then begin
Dok := IE.Document;
Titel := Dok.Title;
Result := IE.LocationURL;
break;
end;
end;
end;
---
IE unterstützt auch DDE, liefert darüber aber nur die URL, nicht den
Titel der Seite.

DDE klappt bei mir leider nicht mit Unicode.

BTW: Ich bin kein DDE-Experte, sondern habe mir die Infos auch nur
zusammengesucht und ausprobiert.

Gruß
Michael
--
bookkey - Bookmarks by Keywords.
Bookmark manager with a new way to handle a large number of keywords.
http://www.bookkey.com
A.Schneider
2005-08-12 17:45:40 UTC
Permalink
Post by Michael Valentiner-Branth
Post by A.Schneider
Wie kann ich an das richtige Firefox Fenster senden?
Du sendest nicht an ein Firefox-Fenster, sondern an den
Firefox-DDE-Dienst, der im Hintergrund läuft.
Das mit dem Auslesen der URL und des Titel hatte ich schon hinbekommen.
Das Problem ist eigentlich das Setzen einer neuen URL. Das kriege ich
nicht hin :-(
Hast du dafür evtl. auch eine Lösung.

Andreas
Michael Valentiner-Branth
2005-08-13 09:52:31 UTC
Permalink
Post by A.Schneider
Das Problem ist eigentlich das Setzen einer neuen URL. Das kriege ich
nicht hin :-(
Hast du dafür evtl. auch eine Lösung.
Nicht nur eine.:-)
1. ShellExecute mit der URL als Parameter
2. DDE:
---
Parameter für Firefox (abhängig von (nicht) in neuem Fenster öffnen):
DDEdienst=Firefox
DDEtopic_Open=WWW_OpenURL
DDEtopic_OpenNew=WWW_OpenURL
DDEmessage_Open="%URL%",,0xFFFFFFFF,,,,
DDEmessage_OpenNew="%URL%",,0x0,,,,

procedure DDEopen (DDEdienst, DDEtopic, DDEmessage, URL : string);
var
aw : PChar;
DDEconv : TDdeClientConv;
begin
DDEconv := TDdeClientConv.create(self);
TRY
DDEmessage := StringReplace(DDEmessage, '%URL%', URL,
[rfIgnoreCase]);

if DDEconv.SetLink(DDEdienst, DDEtopic) then begin
aw := DDEconv.RequestData(DDEmessage);
StrDispose(aw);
DDEconv.CloseLink;
end
else SD2(DDEdienst, 'konnte DDE nicht öffnen');
FINALLY
DDEconv.Free;
END;
end;
---

Am besten ist es wohl, wenn der Benutzer konfigurieren kann, welche
Methode benutzt wird, da es unterschiedliche Wünsche bzgl. neuem Tab
oder Fenster und auch diverse Add-Ons und Konfigurationsmöglichkeiten
in Firefox gibt.

Gruß
Michael
--
bookkey - Bookmarks by Keywords.
Bookmark manager with a new way to handle a large number of keywords.
http://www.bookkey.com
A.Schneider
2005-08-13 10:05:28 UTC
Permalink
Post by Michael Valentiner-Branth
Post by A.Schneider
Das Problem ist eigentlich das Setzen einer neuen URL. Das kriege ich
nicht hin :-(
Hast du dafür evtl. auch eine Lösung.
Nicht nur eine.:-)
1. ShellExecute mit der URL als Parameter
Vielen Dank.
Das probier ich doch gleich mal aus ;-)

Andreas
A.Schneider
2005-08-13 18:13:39 UTC
Permalink
Post by Michael Valentiner-Branth
Nicht nur eine.:-)
1. ShellExecute mit der URL als Parameter
Gruß
Michael
Es funktioniert!!! :-)
Vielen Dank
Andreas
A.Schneider
2005-08-13 18:19:30 UTC
Permalink
Post by Michael Valentiner-Branth
Post by A.Schneider
Das Problem ist eigentlich das Setzen einer neuen URL. Das kriege ich
nicht hin :-(
Hast du dafür evtl. auch eine Lösung.
Nicht nur eine.:-)
1. ShellExecute mit der URL als Parameter
Gruß
Michael
Es fuktioiniert! ;-)
Danke

Jetzt bleibt nur noch die Frage offen - wie schicke ich die URL auch an
das richtige Fenster? Nachdem ich ja kein Handle habe stellt sich das
als Problem dar. Ist es möglich über DDE bei mehreren Fenstern das
richtige rauszufiltern? Oder gibt's da evtl. eine Alternativlösung?
Wenn ich die neue URL setze wird die ja immer nur an das aktuellen
Fenster übermittelt. Wenn aber mein Fenster, an das ich schicken will
gerade nicht aktiv ist, dann habe ich ein Problem - oder mache ich das
was falsch? :-(

Andreas
Michael Valentiner-Branth
2005-08-18 10:01:13 UTC
Permalink
Post by A.Schneider
Ist es möglich über DDE bei mehreren Fenstern das
richtige rauszufiltern?
Dafür gab es zumindest bei Netscape 4.x auch mal einen DDE-Befehl, den
ich nie zum Laufen bekommen habe. Deshalb habe ich ihn auch vergessen.
Wenn du nach Begriffen wie www_openURL googlest, solltest du auf
entsprechende Befehlslisten stoßen.
Post by A.Schneider
Wenn ich die neue URL setze wird die ja immer nur an das aktuellen
Fenster übermittelt.
Nicht ganz richtig: Die URL wird an Firefox übermittelt. Je nach
Parameter macht Firefox dafür ein neues Fenster auf. Falls nicht, hängt
es von der Konfiguration und Extensions ab, ob vielleicht ein neuer Tab
dafür angelegt wird.
Post by A.Schneider
Wenn aber mein Fenster, an das ich schicken will
gerade nicht aktiv ist, dann habe ich ein Problem
Höchstens das Problem, daß der Benutzer das Ergebnis nicht sofort sieht.

Das Fenster-Handle hole ich mir auf anderem Weg (ich muß ja eh checken,
ob der Browser überhaupt läuft), damit kann ich das Browser-Fenster dann
in den Vordergrund holen.

Gruß
Michael

P.S.: Mein Newsserver (arcor) verhinderte ein paar Tagen lang das
posten.
--
bookkey - Bookmarks by Keywords.
Bookmark manager with a new way to handle a large number of keywords.
http://www.bookkey.com
A.Schneider
2005-08-18 16:31:53 UTC
Permalink
Post by Michael Valentiner-Branth
Das Fenster-Handle hole ich mir auf anderem Weg (ich muß ja eh checken,
ob der Browser überhaupt läuft), damit kann ich das Browser-Fenster dann
in den Vordergrund holen.
Hmmm das ist eigentlich die einfachste Variante. Hätte ich eigentlich
auch selber drauf kommen können ;-)

Ich werd mich gleich mal an's Werk machen ;-)

Danke
Andreas

Loading...