问题标签 [npapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
firefox - Firefox 崩溃实例化 NPAPI 插件
我之前将整个插件作为一个非常简单的实现工作,其中包含许多全局和静态变量,现在我已经将其转换为基于对象的设计,因此我可以安全地实例化多个实例等。
但是,因为我已经这样做了,所以在创建插件的实例时,它会到达 MyScriptableNPObject::NewObject() 方法,它尝试调用 createobject() 但永远不会返回并且浏览器崩溃。
我在那里有一些基本的日志记录作为调试它的快速方法,我可以看到这个方法是按预期从 getValue() 调用的,但最终日志永远不会出现,所以 createobject( )。
我已经为我的 NPObject 定义了自己的 Allocate() 方法,据我所知,NPClass 似乎定义正确,如下所示 -
从我所见, npnfuncs 结构也是有效的。所以我对出了什么问题有点难过!
任何帮助将不胜感激,
谢谢。
webkit - npapi全屏
我有一个在 WebKit 上工作的 npapi 插件。如何让它全屏工作?设置屏幕浏览器s or plugin
的工作?
javascript - 如何编写具有 WScript.Shell 功能的 NPAPI 插件
我对 Web 开发非常陌生,并且一直在编写一些通过 ActiveX 使用 WScript.Shell 的 javascript。我知道除了 IE 之外的浏览器不支持 ActiveX。
在通过谷歌进行一些挖掘之后,我发现我可以通过 NPAPI 在所有基于 Web 工具包的浏览器上做类似的事情。不过,我什至不知道从哪里开始。是否可以通过 NPAPI 做我想做的事情?如果是这样,我会从哪里开始?
c++ - 在 Linux 上启动文件的默认应用程序
我正在开发一个 Firefox NPAPI 插件 + XPCOM 组件。我遇到了一个难题:给定从 Internet 下载的文件(例如 PDF 或 PNG),我如何启动默认帮助应用程序以使用 C/C++ 在 Linux 上显示该文件?
目前我正在使用system
函数调用来调用gnome-open
命令并将文件路径传递给它。这适用于 GNOME 桌面,但不适用于具有不同桌面环境(包括 KDE)的 Linux 平台。
所以我的问题是:有没有标准的统一方法来解决这个问题?有什么建议吗?任何帮助将不胜感激!
firefox - NPN_MemFree 后的 NPN_MemAlloc 将返回的数据拧到 Google Chrome
我已经完成了我的 NPAPI 插件,它在 Google Chrome 中运行良好,但有一个奇怪的问题。问题是我在插件中编写了一个向浏览器返回字符串的方法。为此,您必须在浏览器中分配内存并将生成的字符串复制到其中。就像是:
请注意,“m_pPtr”是该类的数据成员,并在构造时初始化为 NULL。当我从 Google Chrome 调用此方法两次时,就会出现问题。第一次效果很好。从第二次开始,以此类推,它返回一个在浏览器中显示为“X”的垃圾值。我已经在 Firefox 中测试了相同的插件,无论我调用多少次该方法,它都能正常工作并返回正确的值。但是当我关闭加载插件的页面时,Firefox 崩溃了。
任何指向在这种奇怪情况下发生的事情的指针都值得赞赏。我正在处理它,一旦我得到任何有用的信息,我会更新这个线程。
installation - 无法获取 HKLM\Software\MozillaPlugins\ 中列出的 NPAPI 插件来实例化
我编写了一个 NPAPI 插件,如果我将它放在 %ProgramFiles\Mozilla FireFox\plugins 中,它会实例化并正确运行。但是,因为我希望它也可以与其他浏览器一起使用,所以我的偏好是在 HKLM\Software\MozillaPlugins\ 中注册它,如此处所述。所以在我的安装程序中,我创建了这些注册表项:
[HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins\@alanta.com/WinVncCtl]
"ProductName"="WinVnc NPAPI 控件"
"路径"="C:\Program Files\Alanta\WinVncCtl.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins\@alanta.com/WinVncCtl\MimeTypes]
[HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins\@alanta.com/WinVncCtl\MimeTypes\application/x-alanta-vnc]
"Description"="Alanta 的 VNC 服务器 NPAPI 插件"
当然,我的安装程序将 WinVncCtl.dll 文件放置在正确的位置。(我也尝试将它重命名为 npWinVnc.dll,理论上它可能需要以“np”开头,没有骰子。我还尝试了版本标签、MIME 类型等的各种组合。)
我像这样实例化它:
但它似乎并没有以这种方式实例化。但是,如上所述,如果我在 object 标记中省略了 classid,而只是将文件 npWinVnc.dll 放在我的插件目录中,那么生活是美好的。
关于我的方法可能出了什么问题的任何想法?
internet-explorer - 如何将 ActiveX 控件转换为 NPAPI 插件
我有一个 ActiveX 控件,旨在 * 搜索附近的无线网络 * 创建无线接入点 * 管理网络适配器
我希望这个插件可以在 Google Chrome/Firefox 中使用。在 IE 中;我可以使用以下代码嵌入:
我创建一个无线网络如下(在 JavaScript 中): thectrl.createNetwork("test",0,null,"NONE",3); ActiveX 有一个 IDL 文件,并输出为 OCX 格式。如何将其变成 Google Chrome/Firefox 的插件?
macos - 在 OS X 上从 NPAPI 调用外部可执行文件?
我正在 OS X 上开发一个应用程序(下载管理器类型),我想通过 Mozilla 插件 API NPAPI 与主要的 Mac 浏览器(Safari、Firefox、Chrome、Opera、Camino)集成。我对如何在 Mac 上注册我的应用程序以处理特定的 URL 和文件类型(通过启动服务 API、info.plist 文件等)有基本的了解,并且我还了解我可以注册特定的 MIME 类型在 NPAPI 中。但是,我在 NPAPI 文档中几乎看不到与外部应用程序集成的挂钩,即通过NPN_GetURL()
单击超链接获取 URL 并将此数据传递给外部应用程序。我发现调用外部应用程序的唯一参考是system
C 中的函数,我发现很难相信这是可以完成的唯一方法。我知道其他 Mac 应用程序(下载管理器)能够以这种方式与浏览器集成,但是关于它的文档似乎很少。我是否误解了 NPAPI 的目的?
linux - Linux 上的 NPAPI 和 Google Chrome
我正在 Linux 上开发一个 NPAPI 插件,并且在使用 Google Chrome 时遇到了几个问题(尽管它在 Firefox 上完美运行)。
首先,插件执行会挂起,经过漫长的痛苦时间后,我发现NPN_Evaluate
当最后一个参数(返回的result
)为 NULL 时,调用挂起。它在 Firefox 上运行良好。解决方案是将NPVariant
类型变量的地址作为参数传递,而忽略该值。
之后插件加载正常,但我遇到此错误消息:[8886:8886:195170759489:ERROR:webkit/glue/plugins/webplugin_delegate_impl_gtk.cc(129)] 未实现 bool WebPluginDelegateImpl::WindowedCreatePlugin() windowed插件,但没有 xembed。请参阅http://code.google.com/p/chromium/issues/detail?id=38229
关于如何让这个插件工作的任何想法?
linux - 处理来自 Firefox 和 Google Chrome 的故障转储
我正在为 Firefox 和 Google Chrome(Windows、Linux 和 Mac)开发一个跨平台的 NPAPI+XPCOM 扩展。我想知道是否有人可以启发我处理组件崩溃的最佳实践。
据我了解,目前 Mozilla 的 Crash Reporter 向 Mozilla Dev 提交创建的小型转储和崩溃报告。我尝试将 SIGSEV 阻止到 Firefox 并在插件代码中创建自己的核心。尽管这很好用,但我确定我不应该那样做。
而且 Google Chrome 甚至似乎都没有创建任何核心转储!有什么建议么?