Electron开发实战之记帐软件10——保证只有一个实例

代码仓库: https://github.com/hilanmiao/LanMiaoDesktophtml

若是咱们不进行任何设置的话,那么咱们的程序就会出现多个实例的状况,以下图。git

苏南大叔也写过一篇文章,介绍了两种方式。有兴趣的能够看一下。 https://newsn.net/say/electron-single-instance-lock.htmlgithub

咱们用包都是最新的,因此直接用Electron4 自带的方式,解决单实例问题便可。app

核心代码:electron

const gotTheLock = app.requestSingleInstanceLock()

if (!gotTheLock) {
  app.quit()
} else {
  app.on('second-instance', (event, commandLine, workingDirectory) => {
    // 当运行第二个实例时,将会聚焦到myWindow这个窗口
    if (mainWindow) {
      if (mainWindow.isMinimized()) mainWindow.restore()
      mainWindow.focus()
    }
  })

  // 建立 myWindow, 加载应用的其他部分, etc...
  app.on('ready', () => {
     createWindow()
  })
}

你还能够经过app.hasSingleInstanceLock()判断是否有单一锁,经过app.releaseSingleInstanceLock()释放全部的锁,并容许多实例再次运行。ui

相关文章
相关标签/搜索