外部程序如何与浏览器通信?希望这会对其他人有所帮助:我列出了我见过或试过的一些选项,但没有成功使用它。如果您了解其他人,请发布。
我的问题:如何在不修改浏览器的情况下从外部Windows应用程序获取当前前景浏览器(Chrome,特定的)URL和引荐来源?
我尝试过使用User32的GetWindowText,它抓取标题(使用jNative for Java)。这经常让我猜服务器。有可能编写一个将标题映射到URL的本地代理,但这很有用。我已经编写了一个FireFox扩展来使用这些信息来装配窗口标题,但它已经过时了,我现在无论如何都需要Chrome。除非广泛使用,否则我不想将垃圾添加到浏览器中。也许我可以在Windows上为chrome提交类似AppleScript的api的功能请求。 AHK Window Info 1.7设法在可见/隐藏文本下获取URL(但不是引用者),但我不知道如何移植它使用的代码。
(q.990409& here的FF / C#的一些信息,q.823755的一些IE信息(重定向到q.352236)。{{3}处没有信息}。 忽略这个:相关问题:如何用宏控制firefox?我如何获取浏览器信息?如何获取当前的浏览器URL?如何从外部应用程序获取chrome的当前URL?)
想法,代码示例,指向潜在相关问题的指针以及我特定问题的答案都很受欢迎。
答案 0 :(得分: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 - time tracking software