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>