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)