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();
  }
})


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM