AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi URL von Chromefenster auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

URL von Chromefenster auslesen

Ein Thema von GhostDog · begonnen am 9. Sep 2014 · letzter Beitrag vom 15. Sep 2014
Antwort Antwort
GhostDog

Registriert seit: 9. Sep 2014
2 Beiträge
 
#1

URL von Chromefenster auslesen

  Alt 9. Sep 2014, 22:42
Abend zusammen,

ich bin ziemlich neu hier, deswegen bin ich nicht sicher ob das Thema hier richtig ist..naja mal schauen

Ich möchte gerne die URL eines kurz zuvor geöffneten CHromefensters in ein Eingabefeld von DElphi kopiert haben.
Bis jetzt habe ich das unten stehende gefunden. Allerdings weiß ich nicht welches Handle das Chromefenster hat


function Tsuche.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);


eErgebnis.Text := GetChromeURL(#FEHLENDER PARAMETER#); <-----Was muss da rein?!


Hoffe ich habe mein Problem ein wenig verständlich gemacht

ps: habe mit google nichts genaueres gefunden.. Wahrscheinlich ist die Lösung ganz einfach und ich komme nur nicht drauf


Und jetzt schon mal vielen Dank im vorraus
  Mit Zitat antworten Zitat
pelzig
(Gast)

n/a Beiträge
 
#2

AW: URL von Chromefenster auslesen

  Alt 10. Sep 2014, 00:21
An der Chrome-URL haben sich schon Viele vergeblich versucht:
http://www.delphipraxis.net/178353-d...-auslesen.html

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);
  //funzt auch nicht:
  //hwndChromeOmnibox := FindWindowEx(hwndChromeWindow, 0, PChar('Chrome_AutocompleteEditView'), nil);
  if hwndChromeOmnibox <> 0 then
    Result := GetText(hwndChromeOmnibox);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  ChromeHWND: HWND;
  Buffer: array[0..255] of Char;
  s: string;
begin
  ChromeHWND := FindWindow('Chrome_WidgetWin_0', Buffer);
  if ChromeHWND <> 0 then
  begin
    s := GetChromeUrl(ChromeHWND);
    MessageBox(Handle, PChar(s), 'URL-Info', mb_Ok);
  end
  else
    MessageBox(Handle, 'Nix gefunden.', 'Fehler', mb_Ok or mb_IconExclamation);
end;
Liefert leider immer einen leeren String zurück

MfG
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

AW: URL von Chromefenster auslesen

  Alt 10. Sep 2014, 09:13
Liefert leider immer einen leeren String zurück
Windows sagt einem sogar was los ist, wenn man es mal fragen würde.
-> Rückgabewerte von WinAPIs auswerten

Es gibt entweder keine Fenster/Edits, mit dem Namen "Chrome_OmniboxView" oder es es sind keine Text-Controls.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
GhostDog

Registriert seit: 9. Sep 2014
2 Beiträge
 
#4

AW: URL von Chromefenster auslesen

  Alt 14. Sep 2014, 15:48
Und das heißt jetzt was?

Also wenn ich das richtig verstanden habe, benötige ich das aktuelle Crome-Tab-Handle! und das kann ich mit dem ProcessExplorer bekommen...Allerdings bekomme ich dann zwar die Integerwerte, allerdings funzen die trotzdem nicht?! also entweder mache ich was falsch oder ich bin zu dumm um die abzulesen ;=)

Wäre über Hilfe sehr dankbar
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#5

AW: URL von Chromefenster auslesen

  Alt 15. Sep 2014, 08:00
Laut dieser Antwort auf SO unterstützt Chrome die Windows Accessibility API, mit der sich Browser Bar Informationen und Inhalte der Webseite auslesen lassen sollen:

http://stackoverflow.com/a/16853301/80901

Es scheint allerdings .NET / managed Code zu sein.
Michael Justin

Geändert von mjustin (15. Sep 2014 um 08:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: URL von Chromefenster auslesen

  Alt 15. Sep 2014, 12:46
Und das heißt jetzt was?
FindWindow gibt im Fehlerfall (Result=0) erweitere Fehlerinfos aus, welche man ebenfalls auswerten/anzeigen könnte. (z.B. kein Fenster mit diesem Namen gefunden)
Delphi-Quellcode:
if ChromeHWND <> 0 then
  ...
else
  //MessageBox(Handle, PChar('Irgenein Fehlerzusatztext: ' + SysErrorMessage(GetLastError)), 'Fehler', mb_Ok or mb_IconExclamation);
  RaiseLastOSError;
Und wenn man statt SentMessage und WM_GETGEXTLENGTH/WM_GETTEXT die APIs GetWindowTextLength und SetWindowText verwendet, dann kann man davon auch die erweiterten Fehlercodes erfahren. (z.B. kein Text-Control)

Zitat:
Delphi-Quellcode:
  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;
Diese Funktion ist auch bissl Mist, denn hier ist die abschließende #0 mit im String.
Delphi-Quellcode:
  function GetText(WindowHandle: HWND): string;
  var
    TxtLength: Integer;
  begin
    TxtLength := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0);
    SetLength(Result, TxtLength);
    if TxtLength > 0 then
      SendMessage(WindowHandle, WM_GETTEXT, TxtLength + 1, WPARAM(PChar(Result)));
  end;

  function GetText(WindowHandle: HWND): string;
  begin
    SetLength(Result, SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0));
    if Result <> 'then
      SendMessage(WindowHandle, WM_GETTEXT, Length(Result) + 1, WPARAM(PChar(Result)));
  end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

AW: URL von Chromefenster auslesen

  Alt 15. Sep 2014, 15:22
Und wenn man statt SentMessage und WM_GETGEXTLENGTH/WM_GETTEXT die APIs GetWindowTextLength und SetWindowText verwendet, dann kann man davon auch die erweiterten Fehlercodes erfahren. (z.B. kein Text-Control)
Was aber mit fremden Programmen nicht funktionieren dürfte.
Zitat:
However, GetWindowTextLength cannot retrieve the length of the text of an edit control in another application.
bzw.
Zitat:
However, GetWindowText cannot retrieve the text of a control in another application.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort

 

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