electron 主进程,和渲染进程的通信

ipcMain https://electronjs.org/docs/api/ipc-main

当在主进程中使用时,它处理从渲染器进程(网页)发送出来的异步和同步信息, 当然也有可能从主进程向渲染进程发送消息

ipcRenderer https://electronjs.org/docs/api/ipc-renderer

使用它提供的一些方法从渲染进程 (web 页面) 发送同步或异步的消息到主进程。 也可以接收主进程回复的消息

使用自定义的 最小化,最大化,关闭按钮

渲染进程 html 片段

<div class="mdui-row-xs-3">
  <div class="mdui-col" @click="sendMinimize">
    <i class="mdui-icon material-icons">&#xe5cf;</i>
  </div>
  <div class="mdui-col" @click="sendmMximize">
    <i class="mdui-icon material-icons">&#xe3c1;</i>
  </div>
  <div class="mdui-col" @click="sendClose">
    <i class="mdui-icon material-icons">&#xe5cd;</i>
  </div>
</div>

渲染进程 js 片段

const { ipcRenderer } = require('electron');
ipcRenderer.on('index-minimize', (e, msg) => {
      // 监听主进程发来的事件...
})

sendClose() {// closr
  ipcRenderer.send('master-close', 'render-index')
},
sendMinimize() {// minimize
  ipcRenderer.send('master-minimize', 'render-index')
},
sendmMximize() {// maximize
  ipcRenderer.send('master-maximize', 'render-index')
}

主进程 js 代码片段

const {
  app,// 控制应用程序寿命的模块。
  BrowserWindow, // 模块创建原生浏览器窗口。
  ipcMain
} = electron;

let mainWindow;

ipcMain.on('master-close', (e, msg) => {
  // 关闭master进程
  app.quit();
})

ipcMain.on('master-minimize', (e, msg) => {
  // 最小化  master进程
  mainWindow.minimize();
  // 主进程向 渲染进程发送消息
  // e.sender.send('index-minimize', 'master')
})

ipcMain.on('master-maximize', (e, msg) => {
  // 最大化  master进程
  if (mainWindow.isMaximized()) {
    mainWindow.unmaximize()
  } else {
    mainWindow.maximize();
  }
})
posted @ 2018-04-12 00:07  Ajanuw  阅读(4214)  评论(0编辑  收藏  举报