0

我正在尝试使用 Firebreath 框架开发浏览器插件。我想要实现的第一件事是使插件能够进行跟踪路由。现在我在 Windows7 上做。目前我选择使用 Win32API CreateProcess 来调用命令 shell。通过设置 dwFlags = STARTF_USESHOWWINDOW ,我可以在执行期间隐藏命令 shell 窗口。

问题: createProcess 是在一个名为 run() 的方法中实现的,我使用 JS 调用它进行测试。当我调用 plugin().run() 时,traceroute 运行良好,并且输出成功地写入了我想要的文本文件。然而,在执行过程中,浏览器变得无响应,最后插件在 traceroute 完成几秒钟后崩溃。由于我是插件开发的新手,对 c++ 了解不多,我想知道为什么会出现这个问题。仅供参考,如果我没有隐藏命令外壳窗口,插件会产生奇迹——在执行 traceroute 时浏览器会响应。

4

1 回答 1

1

在任何 NPAPI 插件(使用 FireBreath 或其他)中,不要阻塞主(javascript)线程,这一点非常重要。您尝试做的事情可以通过几种方式完成;我可能会传入一个回调,启动一个新线程,在那里执行 createprocess,然后在结果完成时触发 js 回调。

请参阅FireBreath 技巧:异步 Javascript 调用

需要注意的一件事是,如果插件在调用期间关闭,您需要能够终止线程(和进程)。

于 2012-02-09T00:25:21.437 回答