windows - npapi 插件如何从浏览器获取 WM_ACTIVATE 消息?

标签 windows npapi browser-plugin

在 Windows 平台上,当我切换到另一个窗口时,浏览器将收到一条 WM_ACTIVATE 消息。 无论如何将 WM_ACTIVATE 消息传递给插件? 我试过 NPP_HandleEvent,但它似乎根本不起作用。

最佳答案

对于 Windows NPP_HandleEvent() 仅用于无窗口插件,默认情况下它们是有窗口的。因此,除非您明确选择无窗口,否则这就是 NPP_HandleEvent() 未被调用的原因。

对于窗口插件,您需要子类化插件窗口以接收窗口消息(参见 Mozillas 测试插件源中的 Subclass())。

对于无窗口插件(应该是首选),WM_ACTIVATEnot delivered to the plugin .
您真的需要处理 WM_ACTIVATE 还是需要知道插件何时可见/聚焦?这可以通过检查 NPP_SetWindow() 和焦点事件的 0 大小的剪辑矩形来确定。
如果您真的需要了解窗口激活(为什么?),我能想到的下一个最好的事情就是监听窗口上的 focus DOM 事件。

关于windows - npapi 插件如何从浏览器获取 WM_ACTIVATE 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14906642/

相关文章:

c++ - NPN_Invoke getElementsByTagName 无效

java - 在哪里可以找到对NPAPI应用程序的现代支持?

javascript - 在浏览器窗口中高效滚动管道输出

c++ - 如何通过另一个程序访问 Windows 服务对象

node.js - 无法在 Windows 10 上安装@vue/cli 3

python - python pygir-ctypes 和 gi.repository 之间的区别

windows - 打包的 Electron 应用程序 (.exe) 无提示崩溃,通过命令行运行正常

javascript - 如何使用 NPAPI 创建一个新的 JS 对象?

.net - Roozz 浏览器插件如何实现它的跨平台能力

javascript - 从浏览器扩展调用网页 JavaScript 方法