代码之家  ›  专栏  ›  技术社区  ›  mk.

浏览器和外部应用程序通信?(Chrome在Windows上的当前URL和引用?)

  •  1
  • mk.  · 技术社区  · 16 年前

    外部程序如何与浏览器通信?希望这会对其他人有所帮助:我列出了一些我已经看到或尝试过的选项,但没有成功地使其生效。如果你知道其他人,请把他们寄出去。


    我的问题是:在不修改浏览器的情况下,如何从外部Windows应用程序获取当前前台浏览器的URL和引用?

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

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

    建议、代码示例、指向潜在相关问题的指针以及对我特定问题的回答都很感谢。

    1 回复  |  直到 13 年前
        1
  •  1
  •   3 revs<br/>user252856&#13;    15 年前

    快速而肮脏的解决方案(您可以将它从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;
    

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