electron 样式不加载_Electron实用技巧-开机启动时隐藏主窗口,只显示系统托盘

e3173e942ab4bae0379f981ef3349ea6.png

# 1

在桌面软件中,开机自启动是很常见的功能,在electron中也提供了很好的支持,以下是主要代码:

//应用是否打包

if (app.isPackaged) {

//设置开机启动

app.setLoginItemSettings({

openAtLogin: true

});

}

//应用是否打包

if (app.isPackaged) {

//获取是否开机启动

const { openAtLogin } = app.getLoginItemSettings();

return openAtLogin;

}

设置开机启动后,如果不稍加处理,用户一开电脑,就会弹出你的软件窗口,这样不太友好。正常来说某些软件只有用户手动打开软件时才弹出主窗口,开机启动的话,只收起到系统托盘中会更好一些。

# 2

windows

在windows下,setLoginItemSettings方法有一个args参数,利用这个参数就可以达到目的,以下是主要代码:

//设置开机启动

app.setLoginItemSettings({

openAtLogin: true,

args: ["--openAsHidden"],

});

//获取是否开机启动

const { openAtLogin } = app.getLoginItemSettings({

args: ["--openAsHidden"],

});

return openAtLogin;

设置开机启动时,在args中传入--openAsHidden,这个字符串可以随便更改。获取开机启动时,也要在args中传入同样的字符串,不然获取不到正确的值。

然后在显示主窗口时,先判断一下process.argv中是否包含--openAsHidden,如果包含,说明是开机自动启动的,这时候不显示窗口;相反 如果不包含--openAsHidden的话,说明是用户手动启动软件,这时正常显示窗口就好了:

win.once("ready-to-show", () => {

if (process.argv.indexOf("--openAsHidden") < 0)

win.show();

});

macOS

mac下没有args参数,可以通过openAsHidden来实现。以下是主要代码:

//设置开机启动

app.setLoginItemSettings({

openAtLogin: true,

openAsHidden: true,

});

//获取是否开机启动

const { openAtLogin } = app.getLoginItemSettings();

return openAtLogin;

光设置openAsHidden: true还不行,也需要做一下判断:

win.once("ready-to-show", () => {

if (!app.getLoginItemSettings().wasOpenedAsHidden)

win.show();

});

# 3

以上就是我正在使用的Electron开机启动时隐藏主窗口的方法,显示系统托盘就用Tray就行,比较简单。如有其他更好的方式,欢迎交流。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值