在 Windows 平台上,当我切换到另一个窗口时,浏览器将收到一条 WM_ACTIVATE 消息。 无论如何将 WM_ACTIVATE 消息传递给插件? 我试过 NPP_HandleEvent,但它似乎根本不起作用。
最佳答案
对于 Windows NPP_HandleEvent()
仅用于无窗口插件,默认情况下它们是有窗口的。因此,除非您明确选择无窗口,否则这就是 NPP_HandleEvent()
未被调用的原因。
对于窗口插件,您需要子类化插件窗口以接收窗口消息(参见 Mozillas 测试插件源中的 Subclass()
)。
对于无窗口插件(应该是首选),WM_ACTIVATE
是 not delivered to the plugin .
您真的需要处理 WM_ACTIVATE
还是需要知道插件何时可见/聚焦?这可以通过检查 NPP_SetWindow()
和焦点事件的 0 大小的剪辑矩形来确定。
如果您真的需要了解窗口激活(为什么?),我能想到的下一个最好的事情就是监听窗口上的 focus
DOM 事件。
关于windows - npapi 插件如何从浏览器获取 WM_ACTIVATE 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14906642/