【ELECTRON】应用多开,限制只启动一个应用,防止多个实例

通过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()    
    })
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值