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

时间:2013-02-16 03:36:18

标签: windows npapi browser-plugin

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

1 个答案:

答案 0 :(得分:2)

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

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

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