【问题标题】:Launching an exe from node.js, and send data between them从 node.js 启动一个 exe,并在它们之间发送数据
【发布时间】:2016-02-07 23:55:21
【问题描述】:

好的,所以我正在使用 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 做其他事情,而可执行文件做它的事情。现在我必须等待以确保文件可以被覆盖。

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

【问题讨论】:

  • 如果之前没有声明过ahk,请在前面加上一个var。
  • 也许这可以帮助你:NodeJS child process。将参数传递给 .exe:const bat = spawn('cmd.exe', ['/c', 'my.bat']);

标签: javascript node.js autohotkey stdio


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多