[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:
🎨 原创不易,支持请点赞、转载请注明本文作者为子成君