5

如何使用 firefox 插件执行 windows 命令并显示其输出?

例如:ping www.stackoverfow.com

我只是想通过执行打包在一起的二进制文件(或)可执行文件或运行 windows 命令来探索更多的 firefox 插件开发。

4

1 回答 1

13

您将为此使用nsIProcess。在您的情况下,事情变得更加复杂,因为您不知道要运行哪个应用程序 - 通常会c:\windows\system32\ping.exe,但您不能确定。如果您不想自己解析PATH环境变量,可以让命令行 shell 为您完成:

Components.utils.import("resource://gre/modules/FileUtils.jsm");

var env = Components.classes["@mozilla.org/process/environment;1"]
                    .getService(Components.interfaces.nsIEnvironment);
var shell = new FileUtils.File(env.get("COMSPEC"));
var args = ["/c", "ping stackoverflow.org"];

var process = Components.classes["@mozilla.org/process/util;1"]
                        .createInstance(Components.interfaces.nsIProcess);
process.init(shell);
process.runAsync(args, args.length);

供参考:COMSPEC环境变量nsIEnvironment

请注意,您无法从该过程接收数据,您只能在它完成时收到通知并了解它是否失败。如果要获取命令的输出,则必须将输出重定向到文件(ping stackoverflow.org > c:\\temp\\foo.txt通过 shell 运行命令)并随后读出该文件。

于 2012-04-18T19:22:55.567 回答