我有一个游戏作为一个子进程衍生。它与游戏的原始.exe文件一起工作得很好。但是,我希望它以最小化的方式执行,而我能告诉它的唯一方法是创建一个windows快捷方式(.lnk文件,在同一目录中),并将启动选项设置为最小化。Node.js不喜欢这样:
internal/child_process.js:313
throw errnoException(err, 'spawn');
^
Error: spawn UNKNOWN
at exports._errnoException (util.js:1026:11)
at ChildProcess.spawn (internal/child_process.js:313:11)
at exports.spawn (child_process.js:380:9)
at ExecDom4Server (D:\Google Drive\Clockwork Hounds stuff\MrClockworkBot\v10
\MrClockworkBot.js:568:42)
at ontimeout (timers.js:365:14)
at tryOnTimeout (timers.js:237:5)
at Timer.listOnTimeout (timers.js:207:5)
游戏本身有一些关于图形设置的参数,但也没有最小化的启动参数。下面是具体的代码:
function execDom4Server(name, args)
{
var spawn = require('child_process').spawn;
childrenProcesses[name.toLowerCase()] = spawn(dom4root + "dom4.exe.lnk", args);
updateDom4Games();
}
我到处找这个问题,但我想它是相当具体的。我不知道这是否只是node.js无法处理.lnk文件。如果你能给予我任何指示,我将不胜感激!
2条答案
按热度按时间2exbekwf1#
如果您使用
spawn
()的shell
选项,这应该可以工作5gfr0r5j2#
另一个可能的问题:我还没有测试它是否是.lnk和.bat文件所独有的,但是即使使用
{shell:true}
,如果你试图启动文件的完整路径,子进程的生成似乎也会立即退出,代码为1。相反,看起来您只需要 * 运行 * 快捷方式的最终文件名,但将
cwd
* 选项 * 设置为它所在的路径:如果您使用的是实际的.lnk(tl;dr:我的实验最初引导我使用fs将.lnk文件写入相应的.bat文件,这是一个完全可行的选项,用于进一步定制进程启动),那么您仍然需要
{shell:true}
来避免,至少在我目前的情况下,errno:-4094
code:'UNKNOWN'
syscall: 'spawn'
错误。