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。但是您必须找到可执行文件的完整路径。它的路径是%windir%/notepad.exe,您可以使用nsIEnvironment来解析该路径(您实际上也必须这样做,cmd.exe而不是假设 Windows 安装在 中c:\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

这是一个老问题,但这个页面在谷歌搜索结果中排名很高

为避免窗口出现和消失,请使用此命令

系统/子进程

于 2016-07-12T14:38:53.960 回答