【发布时间】:2020-01-17 12:56:12
【问题描述】:
如何创建一个 Electron 应用的单个实例?如果它已经在托盘中运行并且用户再次启动它,如何从托盘打开正在运行的应用程序而不是启动一个新的?
【问题讨论】:
-
你能分享你的主js文件吗?你所有的电子设置在哪里?我会相应地编辑我的答案。
标签: electron
如何创建一个 Electron 应用的单个实例?如果它已经在托盘中运行并且用户再次启动它,如何从托盘打开正在运行的应用程序而不是启动一个新的?
【问题讨论】:
标签: electron
谢谢! 我在文档中找到了这个,https://electronjs.org/docs/api/app#apprequestsingleinstancelock:
const { app } = require('electron')
let myWindow = null
const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) {
app.quit()
} else {
app.on('second-instance', (event, commandLine, workingDirectory) => {
// Кто-то пытался запустить второй экземпляр, мы должны сфокусировать наше окно.
if (myWindow) {
if (myWindow.isMinimized()) myWindow.restore()
myWindow.focus()
}
})
// Создать myWindow, загрузить остальную часть приложения, и т.д.
app.on('ready', () => {
})
}
【讨论】:
使用app.makeSingleInstance(),以确保用户不会打开多个电子实例。一旦您分享您的代码,我将进行编辑以向您展示如何正确实现它。
var shouldQuit = app.makeSingleInstance(function(commandLine, workingDirectory) {
// Someone tried to run a second instance, we should focus our window.
if (myWindow) {
if (myWindow.isMinimized()) myWindow.restore();
myWindow.focus();
}
});
【讨论】: