javascript - 你如何强制一个电子应用程序只有一个实例?
问题描述
我试图阻止我的电子应用程序一次启动多个窗口。我已经尝试过了,但是它使打开的第一个窗口自己关闭而不是打开的第二个窗口,并且它完全停止了对第三个窗口的工作:
app.requestSingleInstanceLock();
app.on('second-instance', () => {
app.quit();
});
旧的app.makeSingleInstance
也会引发错误,因为它已被弃用。我应该怎么做?
解决方案
更新:文档中的示例看起来是最好的模式!即返回falseapp.quit()
时调用app.requestSingleInstanceLock()
从文档:
当执行第二个实例并调用 app.requestSingleInstanceLock() 时,将在应用程序的主实例内发出此事件。
即这就是app.quit()
关闭第一个窗口的原因。
...通常应用程序通过使它们的主窗口集中和非最小化来响应这一点。
因此,如果您的主进程打开win
了该实例BrowserWindow
,您可以执行以下操作:
win.show()
win.focus()
我相信您也可以在“第二次实例”处理程序中什么也不做:该事件仅供参考,告诉您用户已尝试第二次打开您的应用程序。
推荐阅读
- firebase - Firebase 云功能查找附近的位置
- java - 为什么 AsyncHttpClient 在发送请求后继续记录“Entry count for : [URL] : 1”?
- ffmpeg - FFmpeg - 处理不断变化的输入音频编解码器
- html - Angular/Prime-NG/Visual Studio 代码 -
numberOfMonths 不起作用 - regex - 替换数百万个正则表达式(perl)
- python - opencv python将帧转换为灰色并写入新视频不起作用
- sql-server - 如何在外键表上编写更新触发器,以便它也考虑主键表上的更新?
- hive - 检查列中的条件,然后在 hive 中执行操作
- jquery - 如何在 ASP.NET MVC 中保存多个具有相同名称属性的数据?
- xamarin - 将单个图像添加到 CGContext 背景会使输出平铺视图