【ELECTRON】应用多开,限制只启动一个应用,防止多个实例_electron 多开_人间奶糖哇的博客-CSDN博客

通过app.requestSingleInstanceLock来控制应用的多开,返回值为boolean。

此方法的返回值表示你的应用程序实例是否成功取得了锁。如果它取得锁失败,你可以假设另一个应用实例已经取得了锁并且仍旧在运行,并立即退出。

即:如果当前进程是应用程序的主要实例,则此方法返回true,同时你的应用会继续运行。如果当它返回false,如果你的程序没有取得锁,它应该立刻退出,并且将参数发送给那个已经取到锁的进程。

macOS上,当用户尝试在Finder打开您的应用程序的第二个实例时,系统会通过发出open-file和open-url事件来自动强制执行单个实例,但是当用户在命令行启动应用程序时,系统的单实例机制将被绕过,您必须手动调用此方法来确保单实例。

在第二个实例启动事激活主实例窗口的示例:

const {app} = require('electron')let myWindow = null const additionalData = {myKey:'myValue'}const gotTheLock = app.requestSingleInstanceLock(additionalData) if(!gotTheLock){    app.quit()}else{    app.on('second-instance',(event,commandLine,workingDirectory,additionalData)=>{        //输入从第二个实例中接收到的数据        console.log(additionalData)        //有人试图运行第二个实例,我们应该关注我们的窗口        if(myWindow){            if(myWindow.isMinimized()) myWindow.restore()            myWindow.focus()                }    })    //创建myWindow,加载应用的其余部分,etc...    app.whenReady().then(()=>{        myWindow = createWindow()        })}

原网址: 访问
创建于: 2023-11-29 09:23:42
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论