经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
Electron实用技巧-开机启动时隐藏主窗口,只显示系统托盘
来源:cnblogs  作者:xhznl  时间:2021/1/25 11:11:36  对本文有异议

# 1

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

  1. //应用是否打包
  2. if (app.isPackaged) {
  3. //设置开机启动
  4. app.setLoginItemSettings({
  5. openAtLogin: true
  6. });
  7. }
  8. //应用是否打包
  9. if (app.isPackaged) {
  10. //获取是否开机启动
  11. const { openAtLogin } = app.getLoginItemSettings();
  12. return openAtLogin;
  13. }

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

# 2

参考electron开机启动相关文档:appsetloginitemsettingssettings-macos-windows

windows

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

  1. //设置开机启动
  2. app.setLoginItemSettings({
  3. openAtLogin: true,
  4. args: ["--openAsHidden"],
  5. });
  6. //获取是否开机启动
  7. const { openAtLogin } = app.getLoginItemSettings({
  8. args: ["--openAsHidden"],
  9. });
  10. return openAtLogin;

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

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

  1. win.once("ready-to-show", () => {
  2. if (process.argv.indexOf("--openAsHidden") < 0)
  3. win.show();
  4. });

macOS

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

  1. //设置开机启动
  2. app.setLoginItemSettings({
  3. openAtLogin: true,
  4. openAsHidden: true,
  5. });
  6. //获取是否开机启动
  7. const { openAtLogin } = app.getLoginItemSettings();
  8. return openAtLogin;

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

  1. win.once("ready-to-show", () => {
  2. if (!app.getLoginItemSettings().wasOpenedAsHidden)
  3. win.show();
  4. });

# 3

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

原文链接:http://www.cnblogs.com/xhznl/p/14301125.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号