![]() |
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 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