【ELECTRON】Electron 实现右下角托盘图标显示

9 篇文章 0 订阅
3 篇文章 0 订阅

需求

当我们点击桌面程序右上角的关闭按钮,想让程序隐藏到右下角而不是直接退出程序,程序仍然后台运行。

分析

  1. 添加右下角托盘显示
  2. 当点击关闭按钮时隐藏主程序窗口

实现 

main.js

const { app, BrowserWindow, Tray, Menu } = require('electron')
const path = require('path')

let tray = null  // 在外面创建tray变量,防止被自动删除,导致图标自动消失
function createWindow () {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  win.loadFile('index.html')

  // 当点击关闭按钮
  win.on('close', (e) => {
    e.preventDefault();  // 阻止退出程序
    win.setSkipTaskbar(true)   // 取消任务栏显示
    win.hide();    // 隐藏主程序窗口
  })

  // 创建任务栏图标
  tray = new Tray(path.join(__dirname, 'icons', 'small.ico'))

  // 自定义托盘图标的内容菜单
  const contextMenu = Menu.buildFromTemplate([
    {
      // 点击退出菜单退出程序
      label: '退出', click: function () {
        console.log(123);
        win.destroy()
        app.quit()

      }
    }
  ])

  tray.setToolTip('demo')  // 设置鼠标指针在托盘图标上悬停时显示的文本
  tray.setContextMenu(contextMenu)  // 设置图标的内容菜单
  // 点击托盘图标,显示主窗口
  tray.on("click", () => {
    win.show();
  })
}

app.whenReady().then(() => {
  createWindow()

  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow()
    }
  })
})

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

这样就实现了一个简单的系统托盘区域的功能,当打开软件,在系统托盘区显示,点击关闭按钮,仍旧在后台运行,点击系统托盘图标显示窗口,右键托盘可退出程序。

注意:要在外面创建全局tray变量,防止被自动删除,导致图标闪一下自动消失!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值