From 78c1dd50262de3782907a7716c156daaef2db5b6 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Thu, 17 Oct 2024 17:17:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 17 +++++++++++------ preload.js | 8 ++++++++ src/App.tsx | 12 ++++++++++++ src/render.d.ts | 2 ++ 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/main.js b/main.js index a7729e1..5202b0e 100644 --- a/main.js +++ b/main.js @@ -57,14 +57,17 @@ function showWindow() { // 如果主窗口已经存在但被最小化了,则恢复显示 if (mainWindow && mainWindow.isMinimized()) { mainWindow.show(); + console.log(3); } // 如果主窗口已存在但不是焦点窗口,则将其置为焦点 if (mainWindow && !mainWindow.isFocused()) { + console.log(2); mainWindow.show(); mainWindow.focus(); } // 如果主窗口还没有被创建,则创建它 if (!mainWindow) { + console.log(1); createWindow(); } } @@ -80,7 +83,7 @@ function createTray() { const contextMenu = Menu.buildFromTemplate([ { label: '打开', click: () => { - showWindow() + mainWindow.webContents.send('isOpenWindows'); }, // icon: iconPath, }, @@ -108,11 +111,7 @@ function createTray() { tray.setToolTip('智汇享'); tray.setContextMenu(contextMenu); tray.on('click', () => { - if (mainWindow.isVisible()) { - mainWindow.hide() - } else { - mainWindow.show() - } + mainWindow.webContents.send('isOpenWindows'); }); } @@ -191,6 +190,7 @@ app.on('ready', () => { break; case 'show': mainWindow.show() + mainWindow.focus(); break; } }); @@ -202,6 +202,10 @@ app.on('ready', () => { ipcMain.handle('getVersion', () => { return app.getVersion(); }); + // 获取窗口是否显示 + ipcMain.handle('isVisible', () => { + return mainWindow.isVisible(); + }); // 获取共享屏幕列表 ipcMain.handle('getSources', async () => { return await desktopCapturer.getSources({ @@ -327,6 +331,7 @@ app.on('ready', () => { child.once('ready-to-show', () => { childWindow[config.key].show() childWindow[config.key].setAlwaysOnTop(true, 'pop-up-menu') + childWindow[config.key].setSkipTaskbar(true) windowOperation(config) }) child.webContents.on('before-input-event', (event, input) => { diff --git a/preload.js b/preload.js index 9df37fc..7613583 100644 --- a/preload.js +++ b/preload.js @@ -21,6 +21,10 @@ window.electron = { getVersion: () => { return ipcRenderer.invoke('getVersion') }, + // 获取窗口是否显示 + isVisible: () => { + return ipcRenderer.invoke('isVisible') + }, // 获取共享屏幕列表 getSources: () => { return ipcRenderer.invoke('getSources') @@ -49,6 +53,10 @@ window.electron = { quitAndInstall: (callback) => { ipcRenderer.on('quitAndInstall', callback) }, + // 点击任务栏图标是否打开窗口 + isOpenWindows: (callback) => { + ipcRenderer.on('isOpenWindows', callback) + }, // 通知下载最新的包 onDownload: (type) => { ipcRenderer.invoke('updateDownload', type) diff --git a/src/App.tsx b/src/App.tsx index ad304bb..5a2944b 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -24,6 +24,7 @@ import ChatSmallWindow from "@/page/Meeting/ChatSmallWindow"; import ChatBigWindow from "@/page/Meeting/ChatBigWindow"; import CurrentSpeakUserWindow from "@/page/Meeting/CurrentSpeakUserWindow"; import NoticeWindow from "@/page/Meeting/NoticeWindow"; +import { getKeyOpenChildWindow } from "./utils/package/public"; const fs = require('fs').promises; const { exec } = require('child_process'); const App: React.FC = () => { @@ -105,6 +106,17 @@ const App: React.FC = () => { window.electron.quitAndInstall(async (_e: any) => { storage.setItem('quitMeeting', true) }) + window.electron.isOpenWindows(async (_e: any) => { + let bool = await window.electron.isVisible() + if (location.hash.indexOf('/meeting') === -1) { + window.electron.setViewStatus(bool ? 'hide' : 'show') + } else { + let shareScreenWindow = await getKeyOpenChildWindow('shareScreenWindow') + if (!shareScreenWindow) { + window.electron.setViewStatus(bool ? 'hide' : 'show') + } + } + }) }, []) useEffect(() => { window.electron.onUpdate((_e: any, data: any) => { diff --git a/src/render.d.ts b/src/render.d.ts index 4b1e285..5d64847 100644 --- a/src/render.d.ts +++ b/src/render.d.ts @@ -15,7 +15,9 @@ export interface IElectronAPI { quit: (bool) => any; downFile: (callBack: Function) => void; quitAndInstall: (callBack: Function) => void; + isOpenWindows: (callBack: Function) => void; getVersion: () => Promise; + isVisible: () => Promise; setRegistry: (uuid: string) => any; getRegistry: () => any; createChildWindow: (config: any) => void;