Google chrome 从扩展中获取Chrome选项卡的窗口句柄?

Google chrome 从扩展中获取Chrome选项卡的窗口句柄?,google-chrome,google-chrome-extension,npapi,window-handles,Google Chrome,Google Chrome Extension,Npapi,Window Handles,我已经编写了一个Chrome扩展(也带有NPAPI),它允许我的应用程序和Chrome相互通信。这一切都很好 我现在要做的是能够将Chrome窗口的HWND绑定到特定的窗口ID和选项卡ID 当我在Chrome内部时(通过插件),我有标签ID和窗口ID,并且我可以基于此执行大多数操作 当我在Chrome之外时(通过我的应用程序),我可以看到窗口结构并获得各种选项卡的HWND 是否有任何方法可以将它们可靠地结合在一起,以便我的应用程序可以告诉Chrome从特定选项卡获取信息?如果您使用Spy++,您

我已经编写了一个Chrome扩展(也带有NPAPI),它允许我的应用程序和Chrome相互通信。这一切都很好

我现在要做的是能够将Chrome窗口的HWND绑定到特定的窗口ID和选项卡ID

当我在Chrome内部时(通过插件),我有标签ID和窗口ID,并且我可以基于此执行大多数操作

当我在Chrome之外时(通过我的应用程序),我可以看到窗口结构并获得各种选项卡的HWND


是否有任何方法可以将它们可靠地结合在一起,以便我的应用程序可以告诉Chrome从特定选项卡获取信息?

如果您使用Spy++,您将看到站点标题与选项卡窗口标题保持一致。你绝对应该用这个


要消除标题冲突,只需从扩展名调用
chrome.tabs.query()
chrome.tabs.update()
,即可保存、更改和恢复选项卡的标题。然后使用
GetCurrentProcess()
EnumWindows()
/
WindowEnumProc()
获取子窗口层次结构并匹配自定义标题。您必须将其传递给EnumWindowsProc回调函数

您需要什么类型的信息?这种方法很脆弱,因为它取决于浏览器的实现细节。你到底想用它实现什么?对于一个短期场景,我需要能够说,当我的应用程序遇到一个Chrome窗口时,它可以以某种方式使用HWND向插件询问关于特定窗口/选项卡的信息。没有办法(我可以看到)从插件外部获取TabID/WindowID。。。而且没有办法让HWND进入插件。所以我基本上只是想弄清楚如何将这些信息连接在一起。请记住,插件已经用光了。我不知道扩展是否有更简单的方法,但如果您将插件注入页面,您可能能够检索父进程或其id。或者,您可以尝试通过插件窗口或绘图上下文访问父进程。请记住,所有这些都取决于Chrome的多进程体系结构的细节(我没有研究过),并且可能会随着未来的版本而中断。
s/out-of-press/out-of-process/
我不知道当时的情况如何,但现在你只能获得所选选项卡的标题,而不是所有选项卡的标题。