首页 > 解决方案 > 你如何强制一个电子应用程序只有一个实例?

问题描述

我试图阻止我的电子应用程序一次启动多个窗口。我已经尝试过了,但是它使打开的第一个窗口自己关闭而不是打开的第二个窗口,并且它完全停止了对第三个窗口的工作:

app.requestSingleInstanceLock();
app.on('second-instance', () => {
    app.quit();
});

旧的app.makeSingleInstance也会引发错误,因为它已被弃用。我应该怎么做?

标签: javascriptelectron

解决方案


更新:文档中的示例看起来是最好的模式!即返回falseapp.quit()时调用app.requestSingleInstanceLock()


文档

当执行第二个实例并调用 app.requestSingleInstanceLock() 时,将在应用程序的实例内发出此事件。

即这就是app.quit()关闭第一个窗口的原因。

...通常应用程序通过使它们的主窗口集中和非最小化来响应这一点。

因此,如果您的主进程打开win了该实例BrowserWindow,您可以执行以下操作:

win.show()
win.focus()

我相信您也可以在“第二次实例”处理程序中什么也不做:该事件仅供参考,告诉您用户已尝试第二次打开您的应用程序。


推荐阅读