5

Windowsコマンドを実行し、Firefoxアドオンを使用してその出力を表示するにはどうすればよいですか?

例:ping www.stackoverfow.com

一緒にパッケージ化されたバイナリファイル(または)実行可能ファイルを実行するか、Windowsコマンドを実行して、Firefoxアドオン開発の詳細を調べようとしています。

4

1 に答える 1

13

そのためにnsIProcessを使用します。あなたの場合、実行したいアプリケーションがわからないため、事態はさらに複雑になります。通常は実行されますc:\windows\system32\ping.exeが、確信が持てません。環境変数を自分で解析したくない場合はPATH、コマンドラインシェルに解析させることができます。

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シェルを介してコマンドを実行)、後でそのファイルを読み取る必要があります。

于 2012-04-18T19:22:55.567 に答える