Electron系统托盘

系统托盘 Tray

1. 主进程

代码如下(示例):

const{ app, BrowserWindow,Tray, Menu } require'electron'
let mainWindow
let appTray = null; // 在外面创建 tray ,防止被自动删除,导致图标消失
function createWindow () {
  /**
   * Initial window options
   */
  mainWindow = new BrowserWindow({
    height: 620,
    width: 400,
    useContentSize: true,
    // frame: false,//添加后自定义标题//自定义边框
    // movable: true,//可否移动
    webPreferences:{
      nodeIntegration:true,
      contextIsolation: false,
      webSecurity: false,
    },   
  });   
  mainWindow.loadFile('./index.html')
  
  // 系统托盘
  //系统托盘右键菜单
  var trayMenuTemplate = [
    {
        label: "显示主窗口",        
        click: function() {
            mainWindow.show();         
        } //打开相应页面
    },
    {
      //打开相应页面
        label: "检查更新",
        click: function() {
        } 
    },
    {   //打开相应页面
        label: "web代理",
        click: function() {} 
    },
    {
        label: "查看日志",
        click: function() {
        } 
    },
    {
        label: "增强加密",
        click: function() {
          //右下角弹出消息弹框 
         }       
    },
    {
        label: "退出客户端",
        click: function() {
            app.quit();
        }
    },
    {
      label: "查看版本信息",
      click: function() {
        //打开相应页面
      } 
    }
    ];
    //系统托盘图标目录
    let iconPath = path.join(__dirname, "../assets/logo3.png");
    let appTray = new Tray(iconPath);
    console.log(iconPath);
    //图标的上下文菜单
    const contextMenu = Menu.buildFromTemplate(trayMenuTemplate);
    //设置此托盘图标的悬停提示内容
    appTray.setToolTip("XXXX");
    //设置此图标的上下文菜单
    appTray.setContextMenu(contextMenu);

    //系统托盘图标闪烁
    let count = 0,
    timer = null;
    timer = setInterval(function() {
      count++;
      if (count % 2 == 0) {
          appTray.setImage(iconPath);
      } else {
          appTray.setImage(iconPath);
      }
    }, 600);

    //单点击 1.主窗口显示隐藏切换 2.清除闪烁
    // 单击显示主窗口,再单击隐藏主窗口
    appTray.on("click", function() {
      if (!!timer) {
          appTray.setImage(iconPath);
          //主窗口显示隐藏切换
          mainWindow.isVisible() ? mainWindow.hide() : mainWindow.show();
          // 关闭托盘显示
          // appTray.destroy();
      }
    });
}

app.on('ready', createWindow)

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

2. 实现效果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值