Electron的使用笔记之主进程与渲染进程的通信

ipcMain

从主进程到渲染进程的异步通信。

进程:主进程。

ipcRenderer

从渲染器进程到主进程的异步通信。

进程:渲染进程。

渲染进程发送数据到主线程

// 在主进程中。
const { ipcMain,ipcRenderer} = require('electron')
ipcMain.on('downPath', function(event, arg) {
  // arg是从渲染进程返回来的数据
  console.log(arg) //'rendererData'
});
ipcRenderer.send('downPath', 'rendererData');

主线程发送数据到渲染进程

// 在主进程中。
const { ipcMain,ipcRenderer} = require('electron')
ipcMain.on('downPath', function(event, arg) {
  // arg是从渲染进程返回来的数据
  console.log(arg) //'rendererData'
  event.reply('downPath-reply', 'mainData')
});

// 在渲染进程中。
ipcRenderer.on('downPath-reply', (event, arg) => {  console.log(arg) // 'mainData'})
ipcRenderer.send('downPath', 'rendererData');

多窗口下当前窗口与主线程的通信

BrowserWindow.getFocusedWindow()

返回 BrowserWindow | null - 此应用程序中当前获得焦点的窗口,如果无就返回 null
 //主进程向渲染进程 发送数据
  BrowserWindow.getFocusedWindow().webContents.send(
    'restoreMaximize',
    'maximize'
  );
  // 在渲染进程中。
ipcRenderer.on('restoreMaximize', (event, arg) => {  console.log(arg) // 'maximize'})

无边框窗口下的最小化,最大化,关闭

无边框窗口下的如果要设置最小化,最大化,关闭功能,就需要用到主线程和渲染进程之间的通信。

主进程main.js

//最小化
ipcMain.on('window-min', () => {
  mainWindow.minimize();
});
//最大化
ipcMain.on('window-max', () => {
  mainWindow.maximize();
});
//还原
ipcMain.on('window-max-restore', () => {
  mainWindow.restore();
});
//关闭
ipcMain.on('window-close', () => {
  mainWindow.close();
});

控制窗口最大化,最小化的页面

<script>
export default {
  data() {
    return {
      sizeState: "onMaximizeRestore",
    };
  },
  mounted() {
    //判断是否最大化
    const currentWindow = require("electron").remote.getCurrentWindow();
    this.sizeState = currentWindow.isMaximized()
      ? "onMaximizeRestore"
      : "onMaximize";
    currentWindow.on("resize", (item) => {
      this.sizeState = item.sender.isMaximized()
        ? "onMaximizeRestore"
        : "onMaximize";
    });
  },
  methods: {
    //最小化
    onMinimize() {
      this.$electron.ipcRenderer.send("window-min");
    },
    //最大化
    onMaximize() {
      this.$electron.ipcRenderer.send("window-max");
    },
    //恢复窗口(不大不小)
    onMaximizeRestore() {
      this.$electron.ipcRenderer.send("window-max-restore");
    },
    //关闭
    onClose() {
      this.$confirm("是否退出程序?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        customClass: "close_confirm",
        type: "warning",
      })
        .then(() => {
          this.$electron.ipcRenderer.send("window-close");
        })
        .catch(() => {});
    },
  },
};
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值