1

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


我的问题:如何在不修改浏览器的情况下从外部 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?

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

4

1 回答 1

1

快速而肮脏的解决方案(您可以将其从 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 -时间跟踪软件

于 2010-01-18T00:33:47.220 回答