![]() |
URL aus Browser holen?
Hallo! Ich habe jetzt sehr lange gesucht, aber nichts gefunden: Ich möchte die URL aus dem Browser holen. Das funktioniert per DDE mit Firefox und MSIE, aber nicht mit Opera und Chrome (offenbar kann Chrome kein DDE):
Delphi-Quellcode:
Wer weiß, wie man die URL aus jedem Browser holen kann, auch von Chrome und Opera?
var
BSourceFileNameNoExt: string; ClDDE: TDDEClientConv; zwi: PAnsiChar; ClDDE := TDDEClientConv.Create(nil); try with ClDDE do begin SetLink(BSourceFileNameNoExt, 'WWW_GetWindowInfo'); zwi := RequestData('0xFFFFFFFF'); CloseLink; end; Result := ExtractFirstQuotedString(StrPas(zwi)); finally StrDispose(zwi); ClDDE.Free; end; |
AW: URL aus Browser holen?
Ich hab das vor Ewigkeiten mal mit EnumWindows, EnumChildWindows and GetWindowText gemacht. Erfordert vorher ein wenig Arbeit mit WinSpy und ist nicht versionsänderungssicher. Finde den Code gerade leider auch nicht wieder. Seit Vista musst Du unter Umständen darauf achten, im Manifest entsprechende Angaben zu machen, um überhaupt so zugreifen zu können.
|
AW: URL aus Browser holen?
Die Frage ist zusätzlich noch was denn "der Browser" ist. Ich habe z.B. typischerweise mehrere Tabs offen, wenn ich gerade etwas mache, da gibt es dann ja nicht die eine URL, sondern es sind mehrere offen.
|
AW: URL aus Browser holen?
Zitat:
|
AW: URL aus Browser holen?
Zitat:
Winspy sagt, die Klasse der URL-Box in Chrome ist "Chrome_OmniboxView", was eigentlich systemweit eindeutig sein und sich wohl auch nicht so schnell ändern dürfte. Bei meiner Aufgabenstellung ist der Chrome-Browser das TopMostWindow. Jetzt werd ich mal versuchen, über das Handle von GetForegroundWindow das ChildControl Chrome_OmniboxView ausfindig zu machen und von dem dann den Inhalt auszulesen. |
AW: URL aus Browser holen?
Heureka! Hier ist die Funktion:
Delphi-Quellcode:
function GetChromeURL(const hwndChromeWindow: HWND): string;
var hwndChromeOmnibox: HWND; function GetText(WindowHandle: HWND): string; var TxtLength: integer; Buf: string; begin TxtLength := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0) + 1; SetLength(Buf, TxtLength); SendMessage(WindowHandle, WM_GETTEXT, TxtLength, LongInt(@Buf[1])); Result := Buf; end; begin Result := ''; hwndChromeOmnibox := FindWindowEx(hwndChromeWindow, 0, PChar('Chrome_OmniboxView'), nil); if hwndChromeOmnibox <> 0 then Result := GetText(hwndChromeOmnibox); end; Man übergibt der Funktion das Handle des Chrome-Fensters und erhält als Ergebnis die in der URL-Zeile angezeigte URL. |
AW: URL aus Browser holen?
Ich habe das jetzt auch mit Opera versucht, aber bei Opera kriege ich mit Winspy für alle Fensterelemente immer nur die Klasse "OperaWindowClass". Weiß jemand, wie man an die Opera URL-Box rankommen könnte? DDE funktioniert bei Opera auch nicht.
|
AW: URL aus Browser holen?
Siehe dein #1,
Delphi-Quellcode:
Opera kann DDE :wink:
BSourceFileNameNoExt:='Opera';
|
AW: URL aus Browser holen?
Zitat:
Habe jetzt diese Browser abgedeckt: MSIE, Firefox, Chrome, Opera. Welche Browser sind noch relevant? |
AW: URL aus Browser holen?
vielleicht Safari?
Grüße Klaus |
AW: URL aus Browser holen?
QupZilla vielleicht (vermutlich Null Verbreitung), funktioniert fast so schön wie Opera, basiert aber auf WebKit (wie Chrome, Safari usw.), daher leider kein DDE ;-(
Zum Testen: ![]() An das Handle des Chrome-Fensters komme ich bisher nicht ran (habe allerdings nur Chrome portable). Wie findest du das Handle von Chrome bzw. wonach suchst du in #6? Danke! |
AW: URL aus Browser holen?
Zitat:
Ich verwende [Winapi.Windows.]GetForegroundWindow, weil bei meiner Aufgabenstellung Chrome den Fokus hat. Leider funktioniert
Delphi-Quellcode:
nicht, obwohl es laut WinSpy die Fensterklasse von Chrome ist. Würde mich auch interessieren, wenn jemand draufkommt.
FindWindow('Chrome_WidgetWin_1', nil)
|
AW: URL aus Browser holen?
Safari scheint eine harte Nuss zu sein. Ich habe bis jetzt keine Möglichkeit gefunden, an den Text der URL-Box in Safari ranzukommen. Die Klassen dort heißen SafariEdit, WebKitEdit oder WebViewWindowClass. Aber die werden von FindWindowEx offenbar nicht gefunden?
|
AW: URL aus Browser holen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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