AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

URL aus Browser holen?

Ein Thema von PeterPanino · begonnen am 9. Jan 2013 · letzter Beitrag vom 10. Jan 2013
Antwort Antwort
Seite 1 von 2  1 2      
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#1

URL aus Browser holen?

  Alt 9. Jan 2013, 21:13
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:
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;
Wer weiß, wie man die URL aus jedem Browser holen kann, auch von Chrome und Opera?
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#2

AW: URL aus Browser holen?

  Alt 10. Jan 2013, 08:59
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.346 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: URL aus Browser holen?

  Alt 10. Jan 2013, 09:09
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: URL aus Browser holen?

  Alt 10. Jan 2013, 12:15
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.
Natürlich der aktuell geöffnete Tab.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: URL aus Browser holen?

  Alt 10. Jan 2013, 12:32
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.

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.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: URL aus Browser holen?

  Alt 10. Jan 2013, 14:55
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.

Geändert von PeterPanino (10. Jan 2013 um 15:16 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: URL aus Browser holen?

  Alt 10. Jan 2013, 15:45
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.
  Mit Zitat antworten Zitat
dunningkruger

Registriert seit: 25. Mai 2012
59 Beiträge
 
#8

AW: URL aus Browser holen?

  Alt 10. Jan 2013, 15:56
Siehe dein #1,

BSourceFileNameNoExt:='Opera'; Opera kann DDE
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: URL aus Browser holen?

  Alt 10. Jan 2013, 16:01
Siehe dein #1,

BSourceFileNameNoExt:='Opera'; Opera kann DDE
Danke, habe es gerade rausgefunden und wollte es gerade posten!

Habe jetzt diese Browser abgedeckt: MSIE, Firefox, Chrome, Opera. Welche Browser sind noch relevant?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: URL aus Browser holen?

  Alt 10. Jan 2013, 16:02
vielleicht Safari?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:36 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