electron创建托盘?

tray.js文件

import {trayIcon} from '../config/StaticPath' const electron = require('electron'); const ipcMain = electron.ipcMain; const Menu = electron.Menu; const Tray = electron.Tray; const app = electron.app; let mainWindow = null; let appTray = null; // 托盘实例 // 隐藏主窗口,并创建托盘 function setTray() { // 判断是否存在托盘 if (appTray && !appTray.isDestroyed()) { // 隐藏主窗口 mainWindow.hide(); // 启动或停止闪烁窗口, 以吸引用户的注意。 mainWindow.flashFrame(true); return '已经创建过托盘' } // 当托盘最小化时,右击有一个菜单显示,这里进设置一个退出的菜单 let trayMenuTemplate = [{ // 系统托盘图标目录 label: '退出', click: function() { app.quit(); // 点击之后退出应用 } }]; // 创建托盘实例 appTray = new Tray(trayIcon); // 图标的上下文菜单 const contextMenu = Menu.buildFromTemplate(trayMenuTemplate); // 隐藏主窗口 mainWindow.hide(); // 启动或停止闪烁窗口, 以吸引用户的注意。 mainWindow.flashFrame(true); // 设置托盘悬浮提示 appTray.setToolTip('商盟订货,让生意更简单') // 设置托盘菜单 appTray.setContextMenu(contextMenu); // 单机托盘小图标显示应用 appTray.on('click', function() { // 显示主程序 mainWindow.show(); // 将窗口从最小化状态恢复到以前的状态 mainWindow.restore() // // 关闭托盘显示 // appTray.destroy(); }); return '创建完毕' } // 主进程监听打开托盘事件,每次点击关闭按钮执行 ipcMain.handle('open-tray', ()=>{ return setTray(); }) export default (main)=> { mainWindow = main; }

 

使用:在你的窗口实例 

 

this.mainWindow = new BrowserWindow({
      height: 800,
      useContentSize: true,
      width: 1700,
      minWidth: 1366,
      show: false,
      frame: config.IsUseSysTitle, // 无边框窗口
      titleBarStyle: 'hidden',
      webPreferences: {
        webviewTag: true,
        nodeIntegration: true,
        webSecurity: false,
        // 如果是开发模式可以使用devTools
        devTools: process.env.NODE_ENV === 'development',
        // devTools: true,
        // 在macos中启用橡皮动画
        scrollBounce: process.platform === 'darwin'
      }
    })
// 直接调用暴露出的tray函数 引入tray.js文件
tray(this.mainWindow)
 
posted @ 2020-10-24 19:56  simple-love  阅读(492)  评论(0编辑  收藏  举报