1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| //渲染进程 <el-button type="primary" @click="screenHot">截图</el-button> //设置一个按钮。 screenHot(){ ipcRenderer.send('screenHot') }//向主进程发送消息。
//主进程 let fullScreen ipcMain.on('screenHot',async()=>{ win.hide()//主窗口隐藏 //创建一个全屏且隐藏菜单栏的窗口。 fullScreen= new BrowserWindow({ autoHideMenuBar: true, // 自动隐藏菜单栏 useContentSize: true, // width 和 height 将设置为 web 页面的尺寸 movable: false, // 是否可移动 frame: false, // 无边框窗口 resizable: false, // 窗口大小是否可调整 hasShadow: false, // 窗口是否有阴影 transparent: true, // 使窗口透明 fullscreenable: true, // 窗口是否可以进入全屏状态 fullscreen: true, // 窗口是否全屏 simpleFullscreen: true, // 在 macOS 上使用 pre-Lion 全屏 alwaysOnTop: false, // 窗口是否永远在别的窗口的上面 webPreferences: { nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION, contextIsolation: !process.env.ELECTRON_NODE_INTEGRATION } }) if (process.env.WEBPACK_DEV_SERVER_URL) { await fullScreen.loadURL(process.env.WEBPACK_DEV_SERVER_URL+'screenHot.html') } else { createProtocol('app') fullScreen.loadURL('app://./screenHot.html')//加载页面 } })
ipcMain.on('getFullScreen',async() => { //获取屏幕大小,以及缩放因子scaleFactor。 const { size, scaleFactor } = screen.getPrimaryDisplay() const sources = await desktopCapturer.getSources({ types:['screen'], thumbnailSize: { width:size.width*scaleFactor, height:size.height*scaleFactor } }) // 向渲染进程发送屏幕截图 fullScreen.webContents.send('sendFullScreen', sources[0],size) })
|