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

3

好的,我正在使用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 的内容。但是我对这些标准不太了解。
我的当前解决方案是使用 Node.js 将要执行的命令写入磁盘中的 .txt 文件,以及一个单独的 .exe 文件,该文件读取 .txt 并执行命令并退出。这个方法可行,但速度较慢,并且感觉不太好。 此外,我希望它是异步的或同步的?其中一种方式可以让我在可执行文件完成任务时继续使用 Node.js 做其他事情。现在我必须等待以确保文件可以被覆盖。
非常感谢您提供有关如何做到这一点的任何建议。

如果您以前没有声明ahk,请在其前面加上var。 - manonthemat
也许这能帮到你:NodeJS子进程。向.exe传递参数:const bat = spawn('cmd.exe', ['/c', 'my.bat']); - ronIDX
1个回答

1

有选项可以将参数传递给生成的应用程序。也许这已经是你想要的了。如何在你的exe中处理这些参数是与其他一些编程语言相关的另一个问题。在node中,子进程运行异步和非阻塞,这正是你要寻找的。

但是,如果你想在程序之间通信,你可以像这样写入子进程的stdin:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接