Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将参数传递给正在运行的electron应用程序_Electron - Fatal编程技术网

将参数传递给正在运行的electron应用程序

将参数传递给正在运行的electron应用程序,electron,Electron,我找到了一些关于使用app.makeSingleInstance和使用CLI参数的搜索结果,但该命令似乎已被删除 是否有其他方法向已启动的electron应用程序发送字符串?一种策略是让外部程序写入electron应用程序知道的文件。然后,您的electron应用程序可以侦听该文件的更改,并可以读取该文件以获取字符串: import fs fs.watch("shared/path.txt", { persistent: false }, (eventType: string, fileNam

我找到了一些关于使用
app.makeSingleInstance
和使用CLI参数的搜索结果,但该命令似乎已被删除


是否有其他方法向已启动的electron应用程序发送字符串?

一种策略是让外部程序写入electron应用程序知道的文件。然后,您的electron应用程序可以侦听该文件的更改,并可以读取该文件以获取字符串:

import fs

fs.watch("shared/path.txt", { persistent: false }, (eventType: string, fileName: string) => {
    if (eventType === "change") {
        const myString: string = fs.readFileSync(fileName, { encoding: "utf8" });
    }
});

我使用了同步<代码> Read FrimeSyc< <代码>,但您可能需要考虑异步版本。

第二,您需要考虑这个外部应用程序写得如此快的情况,可能是<代码> fs。你会错过一个改变吗

否则,我不相信有一种电子原生方式可以从外部应用程序获取这些信息。如果您能够从Electron应用程序启动外部应用程序,则只需执行
cp.spawn(…)
并使用其
stdout
管道来侦听消息


如果共享内存是Node中的一个东西,那么您可以使用它,但不幸的是。

最终,解决我的特定问题的最优雅的解决方案是使用为Electron应用程序添加http api端点

现在,我可以使用以下url轻松地从应用程序外部向Electron发送文本:

localhost:3456?text=myText

从哪里发送字符串?启动与您的electron应用程序通信的子进程是否是一个选项?例如,从shell或其他节点应用程序启动。这可能是什么样的子进程?我正在考虑从您的电子应用程序(例如控制台应用程序;.exe)中生成一个子进程,该应用程序在运行时会出现并定期向其发送消息。如果这是一个合适的解决方案,我可以发布一个例子。C#可执行文件可以吗?我不确定这是否适合解决我的特定问题。也许我应该多讲点背景知识。我想做的是,如果用户选择文本(例如在浏览器或程序中)并按下快捷键,那么我想将此文本发送到electron应用程序。我有一个程序可以复制标记的文本。现在,我只需要一种方法,将此文本从外部传输到electron应用程序。没有办法设置一种系统范围的事件监听器吗?您可以使用它的快捷方式部分。当你的电子应用程序没有运行时,你的程序运行有意义吗?或者你的electron应用程序是否应该启动该程序
localhost:3456?text=myText