From c70c4f1a5bd5714fd3d98ed11630cbe048465bf8 Mon Sep 17 00:00:00 2001 From: Allen Date: Wed, 30 Apr 2025 11:18:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9C=80=E5=B0=8F=E5=8C=96?= =?UTF-8?q?=E5=88=B0=E7=B3=BB=E7=BB=9F=E6=89=98=E7=9B=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/tray.png | Bin 0 -> 3672 bytes src/main.ts | 44 ++++++++++++++++++++++++++++++++++++-------- 2 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 assets/tray.png diff --git a/assets/tray.png b/assets/tray.png new file mode 100644 index 0000000000000000000000000000000000000000..73fd5c918ea068b8050fc191ef7c68a0896ec238 GIT binary patch literal 3672 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 { callback(true); }); - // and load the index.html of the app. - if (MAIN_WINDOW_VITE_DEV_SERVER_URL) { - win.loadURL(`${MAIN_WINDOW_VITE_DEV_SERVER_URL}/login.html`); - } else { - win.loadFile(path.join(__dirname, `../renderer/${MAIN_WINDOW_VITE_NAME}/login.html`)); - } - // production a bad jabe const handleDevTools = () => { if (win.webContents.isDevToolsOpened()) { @@ -66,6 +59,41 @@ const createWindow = () => { } }; globalShortcut.register("CommandOrControl+Shift+I", handleDevTools); + + // and load the login.html of the app. + if (MAIN_WINDOW_VITE_DEV_SERVER_URL) { + win.loadURL(`${MAIN_WINDOW_VITE_DEV_SERVER_URL}/login.html`); + } else { + win.loadFile(path.join(__dirname, `../renderer/${MAIN_WINDOW_VITE_NAME}/login.html`)); + } + + // 最小化到系统托盘 + win.on('minimize', () => { + win.hide(); // 隐藏窗口 + }); + + // 监听窗口关闭(用户点击右上角X) + win.on('close', (event) => { + event.preventDefault(); + win.hide(); + }); + + // 创建托盘图标 + const tray = new Tray(path.join(__dirname, `../../assets/tray.png`)); // 你的托盘图标路径(需要是小图片) + + const contextMenu = Menu.buildFromTemplate([ + { label: '显示窗口', click: () => win.show() }, + { label: '退出程序', click: () => app.exit() } + ]); + + tray.setToolTip('中国电信-工作台'); + tray.setContextMenu(contextMenu); + + // 点击托盘图标也可以恢复窗口(可选) + tray.on('click', () => { + win.show(); + }); + }; // This method will be called when Electron has finished