electron在渲染进程配置”开机自启”动态开关

子成君 902 0

[aru_42]

预备

先确保在主进程中已配置下面几个参数项

new BrowserWindow({
      webPreferences: {
        contextIsolation: false, // 关闭上下文隔离 开启后渲染进程无法访问electron实例
        enableRemoteModule: true, // 让 renderer 进程使用 remote 模块
        nodeIntegration: true,// 允许在网页中使用 node
      }
    })

在主进程配置开机自启

const exeName = path.basename(process.execPath)

app.setLoginItemSettings({
  openAtLogin: true,
  openAsHidden:false,
  path: process.execPath,
  args: [
    '--processStart', `"${exeName}"`,
  ]
})

在渲染进程创建menu控制自启关闭

引入

const {Menu,app} = require('electron').remote;

创建menu

      let menu = Menu.buildFromTemplate([
                {label:'开机自启',type:'checkbox',checked:app.getLoginItemSettings().openAtLogin, click : function () {
                        if(!app.isPackaged){
                            app.setLoginItemSettings({
                                openAtLogin: !app.getLoginItemSettings().openAtLogin,
                                path: process.execPath
                            })
                        }else{
                            app.setLoginItemSettings({
                                openAtLogin: !app.getLoginItemSettings().openAtLogin
                            })
                        }
                        console.log(app.getLoginItemSettings().openAtLogin)
                        console.log(!app.isPackaged);
                    }
                },
                // {type:'separator'},
                {label:'快捷呼出',type:'checkbox',checked:true, accelerator: 'F2',},
            ]);
            menu.popup();

相关api说明:

app.setLoginItemSettings(settings)

settings (Object)

openAtLogin Boolean (可选) - true在登录时启动应用,false 移除应用作为登录启动项默认为 false.
openAsHidden Boolean (可选) macOS - true 表示以隐藏的方式启动应用。 默认为false。
path String (可选) Windows - 在登录时启动的可执行文件,具体的为打包后的APP所在的exe文件路径。默认为 process.execPath.
args String Windows - 要传递给可执行文件的命令行参数。默认为空数组。注意用引号将路径换行。

electron API:

菜单项API
自启动API

发表评论 取消回复
OwO 图片 链接 代码

分享