Vue3 + Electron自定义窗口(最大化、最小化、关闭)

main.js

const { app, BrowserWindow, ipcMain } = require('electron')
const path = require('path')

const loadUrl =
  process.env.MODE === 'devlopment'
    ? 'http://localhost:3000/'
    : `file://${path.join(__dirname, '../dist/index.html')}`

function createWindow() {
  const win = new BrowserWindow({
    // width: 800,
    // height: 600,
    frame: false, // 隐藏窗口边框和标题栏
    fullscreen: true, // 设置全屏
    webPreferences: {
      contextIsolation: true,
      preload: path.join(__dirname, './preload.js')
      // nodeIntegration: true,
    }
  })

  // 显示控制台
  // let contents = win.webContents
  // contents.openDevTools()

  win.loadURL(loadUrl)


  ipcMain.on('window-min', () => {
    win.minimize()
  })

  ipcMain.on('window-max', () => {
    win.maxmize()
  })

  ipcMain.on('window-close', () => {
    win.close()
  })
}

app.whenReady().then(() => {
  createWindow()

  // 窗口长度为0 说明创建窗口失败 重新创建
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow()
    }
  })
})

preload.js

const { contextBridge, ipcRenderer } = require('electron')

// 这样 electronAPI 就会被挂载到window上,页面直接通过window.方法名就可以调用
contextBridge.exposeInMainWorld('electronAPI', {
  minimize: () => ipcRenderer.send('window-min'), // 最小化
  maxmize: () => ipcRenderer.send('window-max'), // 最大化
  shutdown: () => ipcRenderer.send('window-close'), // 退出
})

任意vue页面

<template>
  <div @click="maxmize">最大化</div>
  <div @click="minimize">最小化</div>
  <div @click="shutdown">关闭</div>
</template>

<script lang="ts" setup>

const minimize = () => {
  window.electronAPI.minimize()
}

const maxmize = () => {
  window.electronAPI.maxmize()
}

const shutdown = () => {
  window.electronAPI.shutdown()
}

</script>

<style lang="less" scoped></style>

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值