import { app, BrowserWindow, ipcMain, Menu, screen, shell } from "electron" import Shared from "@main/share" import { getFileUrl } from "@main/util" // webContents // console.log(webContents.getAllWebContents()) const window: any = null //BrowserWindow.fromWebContents(webContents.getFocusedWebContents()) /** * @方法:悬浮:设置位置 */ ipcMain.on("@func:float:setPosition", (event, x, y) => { if (Shared.data.floatWindow) { const size = screen.getPrimaryDisplay().workAreaSize // 获取显示器的宽高 const winSize = Shared.data.floatWindow.getSize() // 获取窗口宽高 let rx = x, ry = y if (x < 0) { rx = 0 } if (y < 0) { ry = 0 } if (x > size.width - winSize[0]) { rx = size.width - winSize[0] } if (y > size.height - winSize[1]) { ry = size.height - winSize[1] } Shared.data.floatWindow.setPosition(rx, ry) } }) /** * @方法:悬浮:展示 */ ipcMain.on("@func:float:show", () => { if (Shared.data.floatWindow) { if (Shared.data.floatWindow.isVisible()) { // createSuspensionWindow() } else { Shared.data.floatWindow.showInactive() } } else { createSuspensionWindow() } }) ipcMain.on("@func:float:showRightMenu", e => { const rightM = Menu.buildFromTemplate([ { label: "添加闹钟", click: () => { ipcMain.emit("@func:render:addClock") // Shared.data.floatWindow?.hide() }, }, { type: "separator" }, { label: "隐藏悬浮时钟", click: () => { Shared.data.floatWindow?.hide() }, }, { type: "separator" }, { label: "仓库地址", click: () => { shell.openExternal("https://github.com/lihaotian0607/auth") }, }, { label: "退出软件", click: () => { Shared.data.forceClose = true app.quit() }, }, ]) rightM.popup({}) }) function createSuspensionWindow() { Shared.data.floatWindow = new BrowserWindow({ width: 260, // 悬浮窗口的宽度 比实际DIV的宽度要多2px 因为有1px的边框 height: 95, // 悬浮窗口的高度 比实际DIV的高度要多2px 因为有1px的边框 type: "toolbar", // 创建的窗口类型为工具栏窗口 frame: false, // 要创建无边框窗口 resizable: false, // 禁止窗口大小缩放 show: false, // 先不让窗口显示 webPreferences: { devTools: false, // 关闭调试工具 nodeIntegration: true, contextIsolation: false, }, transparent: true, // 设置透明 alwaysOnTop: true, // 窗口是否总是显示在其他窗口之前 }) const size = screen.getPrimaryDisplay().workAreaSize // 获取显示器的宽高 const winSize = Shared.data.floatWindow.getSize() // 获取窗口宽高 // 设置窗口的位置 注意x轴要桌面的宽度 - 窗口的宽度 Shared.data.floatWindow.setPosition(size.width - winSize[0], size.height - winSize[1] - 40) // Shared.data.floatWindow.setPosition(size.width / 2, size.height / 2) Shared.data.floatWindow.loadURL(getFileUrl("float")) Shared.data.floatWindow.once("ready-to-show", () => { Shared.data.floatWindow?.show() }) // Shared.data.floatWindow.on("double-click", () => { // alert(123) // }) Shared.data.floatWindow.on("close", () => { Shared.data.floatWindow?.destroy() Shared.data.floatWindow = null }) }