从node.js启动exe,并在它们之间发送数据

时间:2016-02-07 23:55:21

标签: javascript node.js autohotkey stdio

好的,所以我在node.js中使用socket.io创建了一个网页。 这很好用,数据将按照应有的方式传送到每个设备。 现在我想扩展,并使用node.js来控制我的电脑。

我读过这个:Child Process 并得到这个代码,它运行一个可执行文件,并在控制台中输出它的输出。

var spawn = require('child_process').spawn;

var ahk = spawn('outsideNode.exe');
ahk.stdout.on('data', function(data){
    console.log(data.toString());
});

以下是要启动的outsideNode.exe的代码或脚本。 我为此使用了AutoHotKey。

Loop,10
{
    FileAppend,External program spawned by Node.js says hi!,*
    Sleep,1000
}
ExitApp

这是单向的。 Node.js捕获AHK的输出。现在,我遇到的问题是,我如何从node.js发送数据?我怎么在AHK收到它? 我相信我需要阅读有关stdio的信息。但我是std的新手。

我目前的解决方案是使用Node.js将.txt文件写入磁盘,使用我想要的命令,以及一个单独的.exe文件,它读取.txt并执行命令并退出。这是有效的,但它很慢,并且这样做是错误的 另外,我希望它是异步的,还是同步的?我可以使用node.js执行其他操作,而可执行文件可以执行其操作。现在我必须等待确保文件可以被覆盖。

非常感谢有关如何做到这一点的任何意见。

1 个答案:

答案 0 :(得分:0)

可以选择将参数传递给衍生的应用程序。也许这已经是你想要的了。如何处理exe中的参数是另一个与其他编程语言相关的问题。在节点中,子进程运行异步和非阻塞,这就是您要查找的进程。 但是,如果要在程序之间进行通信,可以像这样写入子进程的stdin:

child.stdin.write("here you go");

您的exe必须能够等待stdin才能处理传入的数据。