123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- "use strict";
- import { app, protocol, BrowserWindow, ipcMain, dialog } from "electron";
- import { createProtocol } from "vue-cli-plugin-electron-builder/lib";
- // import installExtension, { VUEJS_DEVTOOLS } from 'electron-devtools-installer'
- const isDevelopment = process.env.NODE_ENV !== "production";
- // const Store = require('electron-store');
- // Scheme must be registered before the app is ready
- protocol.registerSchemesAsPrivileged([
- { scheme: "app", privileges: { secure: true, standard: true } },
- ]);
- async function createWindow() {
- // Create the browser window.
- const win = new BrowserWindow({
- width: 800,
- height: 600,
- webPreferences: {
- // Use pluginOptions.nodeIntegration, leave this alone
- // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
- contextIsolation: false, //上下文隔离
- enableRemoteModule: true, //启用远程模块
- nodeIntegration: true, //开启自带node环境
- webviewTag: true, //开启webview
- webSecurity: false,
- allowDisplayingInsecureContent: true,
- allowRunningInsecureContent: true,
- },
- });
- win.maximize();
- // win.show();
- // 打开控制台
- win.webContents.openDevTools();
- ipcMain.on("getPrinterList", (event) => {
- //主线程获取打印机列表
- win.webContents.getPrintersAsync().then((data) => {
- win.webContents.send("getPrinterList", data);
- });
- //通过webContents发送事件到渲染线程,同时将打印机列表也传过去
- });
- // 处理选择文件夹的 IPC 调用
- ipcMain.handle("select-folder", async () => {
- const result = await dialog.showOpenDialog(win, {
- properties: ["openFile", "openDirectory"],
- });
- return result.canceled ? null : result.filePaths[0];
- });
- ipcMain.handle("select-file", async () => {
- const result = await dialog.showOpenDialog(win, {
- properties: ["openFile"],
- });
- return result.canceled ? null : result.filePaths[0];
- });
- if (process.env.WEBPACK_DEV_SERVER_URL) {
- // Load the url of the dev server if in development mode
- await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL);
- // if (!process.env.IS_TEST) win.webContents.openDevTools();
- } else {
- createProtocol("app");
- // Load the index.html when not in development
- win.loadURL("app://./index.html");
- }
- }
- // Quit when all windows are closed.
- app.on("window-all-closed", () => {
- // On macOS it is common for applications and their menu bar
- // to stay active until the user quits explicitly with Cmd + Q
- if (process.platform !== "darwin") {
- app.quit();
- }
- });
- app.on("activate", () => {
- // On macOS it's common to re-create a window in the app when the
- // dock icon is clicked and there are no other windows open.
- if (BrowserWindow.getAllWindows().length === 0) createWindow();
- });
- // This method will be called when Electron has finished
- // initialization and is ready to create browser windows.
- // Some APIs can only be used after this event occurs.
- app.on("ready", async () => {
- // Store.initRenderer();
- if (isDevelopment && !process.env.IS_TEST) {
- // Install Vue Devtools
- try {
- // await installExtension(VUEJS_DEVTOOLS)
- } catch (e) {
- console.error("Vue Devtools failed to install:", e.toString());
- }
- }
- createWindow();
- });
- // Exit cleanly on request from parent process in development mode.
- if (isDevelopment) {
- if (process.platform === "win32") {
- process.on("message", (data) => {
- if (data === "graceful-exit") {
- app.quit();
- }
- });
- } else {
- process.on("SIGTERM", () => {
- app.quit();
- });
- }
- }
|