浏览器和外部应用程序通信? (Chrome的当前网址和推荐链接在Windows上)

浏览器和外部应用程序通信? (Chrome的当前网址和推荐链接在Windows上)

问题描述:

外部程序如何与浏览器通信?希望这会对其他人有用:我列出了许多我见过或尝试过的选项,但未能成功完成此项工作。如果您了解他人,请张贴他们。浏览器和外部应用程序通信? (Chrome的当前网址和推荐链接在Windows上)

  • 如果MAC地址,使用的AppleScript(在q.263741信息/解决方案,尝试this search
  • 使用或创建一个用于Firefox的扩展(iMacros?,q.410411),铬(?)
  • 使用WebBrowser Control主办一个IE实例(一些提示,在q.1143187
  • 如果您有自己的网站,这可以与后台AJAX脚本
进行

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

我试过使用User32的GetWindowText,它抓住标题(使用jNative for Java)。这经常让我猜测服务器。编写一个将标题映射到URL的本地代理也许是可能的,但这是很有用的。我已经编写了一个FireFox扩展,用这些信息来修改窗口标题,但它已经过时了,现在我仍然需要Chrome。我不想添加垃圾到浏览器,除非广泛有用。也许我可以在Windows上提交一个功能请求,用于在Chrome上显示类似苹果的API。 AHK Window Info 1.7设法获取可见/隐藏文本下的URL(但不是引用者),但我不知道如何移植它使用的代码。

(在q.990409 & here为FF/C#的一些信息,在q.823755一些IE信息(重定向到q.352236)没有在q.1107978信息 忽略这一点:。相关的问题:我如何控制火狐宏如何?我如何获得浏览器信息?我如何获得当前的浏览器URL?如何从外部应用程序获取Chrome的当前URL?

想法,代码示例,指向潜在相关问题的指针以及对特定问题的答案是所有赞赏。

快速和肮脏的解决方案(你可以从德尔福转换成你的语言):

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; 

谢谢了问题) - 刚刚加入到我们的工作时间 - time tracking software