/** * electron 主文件 */ "use strict" import Shared from "./share" import setTray from "./disk" import { getFileUrl } from "./util" // import '../renderer/store' import "./facilities" import { app, BrowserWindow, dialog } from "electron" Shared.data = { mainWindow: null, // 主窗口 floatWindow: null, // 浮动窗口 miniWindow: null, forceClose: false, lastChoice: -1, // 做过的选择 } console.log("asdasadsads") /** * Set `__static` path to static files in production * https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-static-assets.html */ let isDev = process.env.NODE_ENV == "development" ? true : false if (!isDev) { // @ts-ignore global.__static = require("path").join(__dirname, "/static").replace(/\\/g, "\\\\") } function createWindow() { /** * Initial window options */ Shared.data.mainWindow = new BrowserWindow({ height: 400, useContentSize: true, width: 600, resizable: true, minWidth: 450, minHeight: 400, icon: __static + "/icon.png", // frame: false, // transparent: true, alwaysOnTop: false, webPreferences: { nodeIntegration: true, contextIsolation: false, }, }) Shared.data.mainWindow.loadURL(getFileUrl("")) Shared.data.mainWindow.on("close", (event: any) => { if (Shared.data.forceClose) { Shared.data.mainWindow = null app.quit() } else if (Shared.data.mainWindow) { if (Shared.data.lastChoice === 1) { if (Shared.data.miniWindow) { Shared.data.mainWindow.hide() // 调用 最小化实例方法 } else { setTray(app, Shared.data.mainWindow) } event.preventDefault() } else { const choice = dialog.showMessageBoxSync(Shared.data.mainWindow, { type: "info", title: "Information", defaultId: 0, cancelId: 0, message: "确定要关闭吗?", buttons: ["没事", "最小化到托盘", "直接退出"], }) if (choice === 1) { Shared.data.lastChoice = 1 if (Shared.data.miniWindow) { Shared.data.mainWindow.hide() // 调用 最小化实例方法 } else { setTray(app, Shared.data.mainWindow) } event.preventDefault() } else if (choice === 2) { Shared.data.mainWindow = null // app.quit() // 不要用quit();试了会弹两次 Shared.data.forceClose = true app.quit() // exit()直接关闭客户端,不会执行quit(); } else { event.preventDefault() } } } }) } const gotTheLock = app.requestSingleInstanceLock() if (!gotTheLock) { app.exit() } else { require("./menu") require("./float") app.on("second-instance", (event, commandLine, workingDirectory) => { // 当运行第二个实例时,将会聚焦到mainWindow这个窗口 if (Shared.data.mainWindow) { if (Shared.data.mainWindow.isMinimized()) Shared.data.mainWindow.restore() Shared.data.mainWindow.focus() Shared.data.mainWindow.show() } }) app.on("ready", createWindow) app.on("before-quit", event => { if (Shared.data.forceClose) { app.exit() } else { event.preventDefault() } }) app.on("window-all-closed", () => { if (process.platform !== "darwin") { app.exit() } }) app.on("activate", () => { if (Shared.data.mainWindow === null) { createWindow() } }) }