Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Die URL aus Google Chrome auslesen (https://www.delphipraxis.net/178353-die-url-aus-google-chrome-auslesen.html)

LuckySpacy 3. Jan 2014 11:49

Die URL aus Google Chrome auslesen
 
Ich bin jetzt schon seit Stunden verzweifelt am Suchen, wie man die URL aus dem Browser Chrome auslesen kann.
Alles was ich bisher gefunden habe, funktioniert nicht.

Was gut funktioniert ist das:

Delphi-Quellcode:

uses
  DdeMan;

function TForm1.GetURL(Service: string): string;
var
  ClDDE: TDDEClientConv;
  temp: PChar;
begin
  Result := '';
  ClDDE := TDDEClientConv.Create(nil);
  with ClDDE do
  begin
    SetLink(Service, 'WWW_GetWindowInfo');
    temp := RequestData('0xFFFFFFFF'); //FEHLER!
    Result := StrPas(temp);
    StrDispose(temp);
    CloseLink;
  end;
  ClDDE.Free;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
   Memo1.Lines.Add(GetURL('IExplore'));
end;
Das ist aber nicht das was ich suche.
Ich möchte einzig und alleine die URL aus dem Chrome Browser auslesen.
Ich wäre für jeden Hinweis dankbar.

LuckySpacy 3. Jan 2014 12:29

AW: Die URL aus Google Chrome auslesen
 
Vielleicht kann mir auch jemanden zu diesem Code was sagen, den man zuhauf findet.

Delphi-Quellcode:
function GetActivePageUrlFromChrome(Handle: HWnd; Param: LParam): Bool; stdcall;
var
  List: TStrings;
  hWndChrome, hWndChromeChild: HWND;
  Buffer           : array[0..255] of Char;
begin
  List := TStrings(Param);
  //get the window caption
  SendMessage(Handle, WM_GETTEXT, Length(Buffer), integer(@Buffer[0]));
  //look for the chrome window with "Buffer" caption
  hWndChrome := FindWindow('Chrome_WidgetWin_0', Buffer);
  if hWndChrome <> 0 then
  begin
    hWndChromeChild := FindWindowEx(hWndChrome, 0, 'Chrome_AutocompleteEditView', nil);
    if hWndChromeChild <> 0 then
    begin
      SendMessage(hWndChromeChild, WM_GETTEXT, Length(Buffer), integer(@Buffer));
      List.Add(Buffer);
    end;
  end;
  Result := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  slChromeUrl     : TStringList;
begin
  slChromeUrl := TStringList.Create;
  try
    EnumWindows(GetActivePageUrlFromChrome, LParam(slChromeUrl));
    Memo1.Lines.AddStrings(slChromeUrl);
  finally
    FreeAndNil(slChromeUrl);
  end;
end;
Obwohl dieser Code sehr verbreitet ist, scheitert es bei mir schon beim Kompilieren.
Fehlermeldung:
E2035 Nicht genügend wirkliche Parameter

Warum ist das so?
Was mache ich falsch?

DeddyH 3. Jan 2014 13:05

AW: Die URL aus Google Chrome auslesen
 
Versuch mal
Delphi-Quellcode:
(*Dummy-Zeile für den DP-Highlighter*)
EnumWindows(@GetActivePageUrlFromChrome, LParam(slChromeUrl));
[edit] Übrigens ist mir der Sinn der Kombination aus EnumWindows und FindWindow verborgen geblieben. Sollte nicht eins von beiden ausreichen? [/edit]

LuckySpacy 3. Jan 2014 14:00

AW: Die URL aus Google Chrome auslesen
 
Ja danke, das dachte ich mir auch.
Das funktioniert jedenfalls soweit, dass man es Kompilieren kann.
"Chrome_AutocompleteEditView" findet das Programm aber nicht.
Ich kann mir nur vorstellen, dass dieser Code früher vielleicht mal funktioniert hat, aber mit dem aktuellen Browser geht es nicht.
So sehr ich das Internet jetzt auch durchwühlt hab, werde ich einfach nicht fündig.

DeddyH 3. Jan 2014 14:06

AW: Die URL aus Google Chrome auslesen
 
Hast Du es mal mit WinSpy versucht? Damit könntest Du Dir den benötigten Code auch gleich generieren lassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 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