2

たとえば、次のコマンドを実行したいと思います。

notepad C:\file.txt

Firefox アドオンとnsIProcessを使用します。私はすでに次のようなコードを書いています:

var exepath = "C:\Windows\System32\cmd.exe";
var args = ["/c", "notepad", "C:\file.txt"];
var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
file.initWithPath(exepath);
var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
process.init(file);
process.run(true, args, args.length);

しかし、私は窓を開けたくありません。このウィンドウを開かずにコマンドを実行することはできますか?

cmd.exe /C start notepadコマンドの実行後にこのウィンドウを閉じるために使用できることはわかっていますが、点滅します(表示されてから消えます)。さらに、終了値を読みたい:

var exitval = process.exitValue;

追加のソフトウェアをインストールできないことを忘れていました。

4

2 に答える 2

2

メモ帳を直接実行できます - その必要はありませんcmd.exe。ただし、実行可能ファイルのフル パスを見つける必要があります。そのパスはです。nsIEnvironment%windir%/notepad.exeを使用してそのパスを解決できます ( Windows が にインストールされていると仮定するのではなく、実際に行う必要があるもの):cmd.exec:\windows

var env = Cc["@mozilla.org/process/environment;1"]
            .getService(Ci.nsIEnvironment);
var exepath = env.get("WINDIR") + "\\notepad.exe";

そして、メモ帳以外のものを実行したい場合に備えて、コマンドラインが通常行っている作業、つまり、PATH環境変数を取得し、リスト内のディレクトリを調べて、ファイルが存在する場所を探す必要があります。

于 2012-11-06T16:05:51.260 に答える
1

これは古い質問ですが、このページは Google の検索結果で上位にランクされています

ウィンドウが表示されたり消えたりしないようにするには、このコマンドを使用する必要があります

システム/子プロセス

于 2016-07-12T14:38:53.960 に答える