From 6e85e5e3e7837f250e75ea751187c22e1ffc6c11 Mon Sep 17 00:00:00 2001 From: yj <1336058017@qq.com> Date: Thu, 10 Oct 2024 16:11:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=9A=E7=AA=97=E5=8F=A3=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E5=B9=B6=E6=9C=AA=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.js | 26 ++++++++++++++++++++ preload.js | 4 +++ src/page/ShareScreenWindow/index.module.scss | 5 ++++ src/page/ShareScreenWindow/index.tsx | 19 ++++++++++++++ src/render.d.ts | 1 + 5 files changed, 55 insertions(+) create mode 100644 src/page/ShareScreenWindow/index.module.scss create mode 100644 src/page/ShareScreenWindow/index.tsx diff --git a/main.js b/main.js index 4609203..c192ae1 100644 --- a/main.js +++ b/main.js @@ -17,6 +17,7 @@ const { autoUpdater, CancellationToken } = require('electron-updater'); const cancellationToken = new CancellationToken() app.allowRendererProcessReuse = false; let mainWindow = null; +let childWindow = [] let isMaximized = false; let env; let regKey; @@ -299,6 +300,31 @@ app.on('ready', () => { }) }); }); + // 创建子窗口 + ipcMain.handle('createChildWindow', (event, config) => { + const child = new BrowserWindow({ + parent: mainWindow, + webPreferences: { + contextIsolation: false, + nodeIntegration: true, + enableRemoteModule: true, + nodeIntegrationInWorker: true, + allowMediaDevices: true, + // preload: path.join(__dirname, 'preload.js') + }, + // show: false, + // frame: false, + // backgroundColor: '#00000000', + // transparent: true, + }) + child.loadURL(config.url) + childWindow.push(child) + child.once('ready-to-show', () => { + child.show() + console.log(config); + child.setSize(config.width, config.height) + }) + }); } }); // 检测更新,在你想要检查更新的时候执行,renderer事件触发后的操作自行编写 diff --git a/preload.js b/preload.js index 51c897d..adecf8a 100644 --- a/preload.js +++ b/preload.js @@ -73,4 +73,8 @@ window.electron = { setRegistry: (uuid) => { ipcRenderer.invoke('setRegistry', uuid) }, + // 创建子窗口 + createChildWindow: (config) => { + ipcRenderer.invoke('createChildWindow', config) + }, } diff --git a/src/page/ShareScreenWindow/index.module.scss b/src/page/ShareScreenWindow/index.module.scss new file mode 100644 index 0000000..ce5388d --- /dev/null +++ b/src/page/ShareScreenWindow/index.module.scss @@ -0,0 +1,5 @@ +.shareScreenWindow { + background-color: red; + color: red; + font-size: 30px; +} \ No newline at end of file diff --git a/src/page/ShareScreenWindow/index.tsx b/src/page/ShareScreenWindow/index.tsx new file mode 100644 index 0000000..9782e4c --- /dev/null +++ b/src/page/ShareScreenWindow/index.tsx @@ -0,0 +1,19 @@ +import styles from '@/page/Meeting/ShareScreenWindow/index.module.scss' +import { useEffect } from "react"; +const ShareScreenWindow: React.FC = () => { + + useEffect(() => { + + }, []); + + + return ( + <> +
+ 2222 +
+ + ) +} + +export default ShareScreenWindow diff --git a/src/render.d.ts b/src/render.d.ts index 46fb8cb..2a0cc6d 100644 --- a/src/render.d.ts +++ b/src/render.d.ts @@ -18,6 +18,7 @@ export interface IElectronAPI { getVersion: () => Promise; setRegistry: (uuid: string) => any; getRegistry: () => any; + createChildWindow: (config: any) => void; } declare global {