【问题标题】:It's possible send signal to app(electron) by external source?可以通过外部源向应用程序(电子)发送信号吗?
【发布时间】:2021-05-21 13:57:33
【问题描述】:

可以通过外部源向app(electron)发送信号吗?

例如,Atom 通过发送行命令添加新项目

atom . -a

我找不到任何示例,甚至在 Atom 的源代码中也找不到。

更新: 是 atom 启动期间的命令行参数,并带有正在运行的 atom 实例。

【问题讨论】:

  • 不知道 atom:这是 atom 启动期间的命令行参数还是该命令与正在运行的 atom 实例交互?
  • 两者。在原子启动期间和正在运行的实例。

标签: electron


【解决方案1】:

如何在 Electron 中解析命令行参数?

这与使用 process.env 从 NodeJS 解析命令行参数没有什么不同。问题has been answered before,这里不再赘述。

如何通过命令行开关与正在运行的 Electron 实例交互

首先,我假设您将可能的运行实例的数量限制为一个 - 否则您必须弄清楚要与哪个程序实例进行通信(可能通过将进程 ID 添加到命令行论据。)

让我们编码吧。对于您的 main.js:

var shouldQuit = app.makeSingleInstance(function (commandLine, workingDirectory) {
    if (mainWindow) {
        if (mainWindow.isMinimized()) mainWindow.restore()
        mainWindow.focus()
        /* Insert your Code handling the passed command line arguments here */
    }
});

当试图启动第二个实例时调用这个 sn-p,而不是让第一个实例成为焦点。这可以很容易地调整为将保存在commandLine 中的命令行参数传递给原始实例。

此外,您需要阻止第二个实例实际打开并退出:

if (shouldQuit) {
    app.quit();
    return;
}

【讨论】:

  • “这可以很容易地调整为将保存在 commandLine 中的 commandLine 参数传递给原始实例。” - 这是我想要理解的部分。对一个人来说容易,对所有人来说并不容易。 :(
  • 您好@spartygw,我在您可以添加您想要处理传递的命令行参数的代码的位置添加了注释。如果您有任何更具体的问题,请告诉我。
  • 这实际上有很大帮助。我没有想到来自单独实例的命令行参数会出现并在那里可用,但确实如此!谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-07-07
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多