浏览器和外部应用程序通信? (Windows 上 Chrome 的当前 url 和引荐来源网址?)

发布于 2024-08-02 10:10:54 字数 2202 浏览 2 评论 0 原文

外部程序如何与浏览器通信?希望这对其他人有一些用处:我列出了一些我在未能成功实现此功能时所看到或尝试过的选项。如果您知道其他人,请发布。

  • 如果是 Mac,请使用 AppleScript(信息/解决方案位于 q.263741,尝试 此搜索
  • 使用或创建 Firefox 扩展(iMacros? ,q.410411),Chrome(?)
  • 使用 WebBrowser 控件 托管 IE 实例(一些提示位于 < a href="https://stackoverflow.com/questions/1143187/get-current-url-from-browser">q.1143187)
  • 如果您拥有该网站,则可以使用后台ajax脚本来完成此操作

我的问题:如何在不修改浏览器的情况下从外部 Windows 应用程序获取当前前台浏览器(特别是 Chrome)的 URL 和引荐来源网址?

我尝试使用 User32 的 GetWindowText 来获取标题(使用 jNative for Java)。这常常让我猜测服务器。也许可以编写一个本地代理来将标题映射到 URL,但这需要大量工作。我已经编写了一个 FireFox 扩展来使用这些信息来设置窗口标题,但它已经过时了,无论如何我现在都需要在 Chrome 上使用它。我不想向浏览器添加垃圾,除非广泛有用。也许我可以为 Windows 上的 chrome 提出一个类似 applescript 的 api 的功能请求。 AHK Window Info 1.7 设法抓取可见/隐藏下的 URL(但不是引用者)文本,但我不知道如何移植它使用的代码。

(FF/C# 的一些信息位于 q.990409 & ; 这里,一些IE 信息位于 q.823755(重定向到 q.352236)。q.1107978。 忽略这个:相关问题:如何使用宏控制 Firefox?如何获取浏览器信息?如何获取当前浏览器的 URL?我如何从外部应用程序获取 chrome 的当前 URL?

想法、代码示例、潜在相关问题的提示以及我的具体问题的答案都值得赞赏。

How might an external program communicate with a browser? Hopefully this will be of some use to others: I'm listing off a number of options I've seen or tried while unsuccessfully getting this to work. If you know of others, please post them.


My question: how can I get the current foreground browser's (Chrome, specifcally) URL and referrer from an external windows app, without modifying the browser?

I've tried using User32's GetWindowText, which grabs the title (using jNative for Java). This often lets me guess the server. It may be possible to write a local proxy that will map titles to URLs, but this is much work. I've written a FireFox extension to rig the window title with this information, but it became outdated, and I need this for Chrome now anyway. I'd prefer not to add junk to the browser, unless broadly useful. Perhaps I could file a feature request for an applescript-like api for chrome on windows. AHK Window Info 1.7 manages to grab the URL (but not referrer) under visible/hidden text, but I have no idea how to port the code it uses.

(Some info for FF/C# at q.990409 & here, some IE info at q.823755 (redirects to q.352236). No info at q.1107978.
Ignore this: Related questions: How can I control firefox with a macro? How can I get browser information? How can I get current browser URL? How can I get chrome's current URL from an external app?)

Ideas, code samples, pointers to potentially relevant questions, and answers to my specific question are all appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

听风念你 2024-08-09 10:10:54

快速而肮脏的解决方案(您可以将其从 Delphi 转换为您的语言):

var
 h : HWND;
 pCh : array [0..255] of char;
begin
 Result := '';
 h := GetForegroundWindow;   // or pass main Chrome window here
 if h = 0 then exit;

 h := GetWindow(h,GW_CHILD);
 if h = 0 then exit;

 h := GetWindow(h,GW_HWNDNEXT);
 if h = 0 then exit;

 SendMessage(h, WM_GETTEXT, SizeOf(pCh), integer(@pCh)) ;
 Result := pCh;                // <-- URL is here!
end;

感谢您提出问题 ;) - 刚刚添加到我们的 WorkTime - 时间跟踪软件

Quick and dirty solution (you can convert it from Delphi to your language):

var
 h : HWND;
 pCh : array [0..255] of char;
begin
 Result := '';
 h := GetForegroundWindow;   // or pass main Chrome window here
 if h = 0 then exit;

 h := GetWindow(h,GW_CHILD);
 if h = 0 then exit;

 h := GetWindow(h,GW_HWNDNEXT);
 if h = 0 then exit;

 SendMessage(h, WM_GETTEXT, SizeOf(pCh), integer(@pCh)) ;
 Result := pCh;                // <-- URL is here!
end;

Thanks for the question ;) - just added to our WorkTime - time tracking software

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文