2023最新electron 进程间通讯的几种方法

数据传递(旧)

渲染进程发数据到主进程

// 按钮事件
const handleWebRootPathClick = () => {ipcRenderer.send('open_dir')
}// main.ts中接收
ipcMain.on('open_dir', () => {console.log('recv ok')
})

主进程发数据到渲染进程

// main.ts中发送数据
win.webContents.send('load', {message: "主进程执行了,这是结果"});// 组件中接收
ipcRenderer.on('load', (_, message) => {console.log('主线程过来的数据:', message)
})

数据传递(新)

渲染进程到主进程

// preload.js
const menuOpt = {min: () => ipcRenderer.send('window:minimize'),isMaximized: () => ipcRenderer.invoke('get:isMaximized'),maximize: () => ipcRenderer.send('window:maximize'),restore: () => ipcRenderer.send('window:restore'),close: () => ipcRenderer.send('window:close')
}
contextBridge.exposeInMainWorld('electronAPI', {menuOpt,
})// 渲染进程
const { menuOpt } = window.electronAPI
menuOpt.min()// 主进程
const renderFuncInit = () => {ipcMain.on('window:minimize', () => {win.minimize()win.webContents.send('update-counter', '6666')})ipcMain.on('window:maximize', () => {win.maximize()})ipcMain.on('window:restore', () => {win.restore()})ipcMain.on('window:close', () => {win.close()})ipcMain.handle('get:isMaximized', async () => {return win.isMaximized()})
}
// 初始化app(在 Electron 完成初始化时触发),挂载上面创建的 桌面应用程序窗口
app.whenReady().then(() => {renderFuncInit()createWindow()
})

主进程到渲染进程

// preload.js
contextBridge.exposeInMainWorld('electronAPI', {handleCounter: (callback) => ipcRenderer.on('update-counter', callback)
})// 主进程
win.webContents.send('update-counter', '6666')// 渲染进程
const { menuOpt, handleCounter } = window.electronAPI
handleCounter((_event, value) => {console.log(value, _event)
})

双向通讯

// preload.js
const file = {openDir: (dirPath) => ipcRenderer.invoke('file:openDir', dirPath),
}contextBridge.exposeInMainWorld('electronAPI', {file,
})// 主进程
ipcMain.handle('file:openDir', async (_, dirPath = __dirname) => {const { canceled, filePaths } = await dialog.showOpenDialog({defaultPath: dirPath, // 默认盘properties: ['openFile', 'openDirectory']})return {isCanceled: canceled,files: filePaths}
})// 渲染进程
const openDir = async () => {const { isCanceled, files } = await file.openDir()console.log('dddd', isCanceled, files)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/177970.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据分析师职业技能提升好考吗?含金量高不高

随着大数据时代的到来,大数据分析技能需求已经成为很多企业和机构的必备要求。大数据分析师证书成为当下的热门之一,那么大数据分析师证书需要具备哪些条件呢? 首先,报考大数据分析师证书需要具备以下方面的条件: …

数据恢复入门分享-启动扇区

启动扇区位于存储区的前端,一般显示如下 如果扇区数据丢失或者错误 存储器也就不能识别和数据存储了 关注我们,不定期分享互联网数字化的干货 #数据恢复##储存卡##启动扇区#

arcgis--创建多分辨率DEM

方法一:技术链为【栅格转点】-【创建TIN】-【TIN转栅格】。首先需要将栅格转成点数据,再根据点数据创建TIN,再将TIN转栅格。 1、打开一幅DEM影像图,如下: 在【转换工具】-【由栅格转出】 -【栅格转点】工具中&#xf…

动作活体检测能力支持自定义扫描动作,开发者接入更高效

随着人脸识别技术在金融、医疗等多个领域的加速落地,网络安全、信息泄露等问题愈为突出,用户对应用稳定性和安全性的要求也更为严格。 华为机器学习服务的动作活体检测能力,支持实时捕捉人脸,根据用户配合做动作可以判断是真实活…

海报设计必备!五个免费网站分享,让你的创意得以充分展现!

海报作为一种重要的宣传工具,在各种场合得到了广泛的应用。然而,对许多人来说,制作一张漂亮的海报并不容易。幸运的是,有许多免费的海报制作网站可以帮助人们轻松地制作出漂亮的海报。本文将分享五个优秀的免费海报制作网站。 1.…

RK3568笔记五:基于Yolov5的训练及部署

若该文为原创文章,转载请注明原文出处。 一. 部署概述 环境:Ubuntu20.04、python3.8 芯片:RK3568 芯片系统:buildroot 开发板:ATK-DLRK3568 开发主要参考文档:《Rockchip_Quick_Start_RKNN_Toolkit2_C…

双十一买高画质投影仪,当贝F6还是极米H6?

如果你想购买一台4K画质的投影仪,那么在各大平台搜索“双十一最值得买的4K投影仪”时,一定会注意到当贝F6和极米H6这两个型号投影仪。个人认为当贝F6和极米H6都分别是当贝和极米两个品牌非常具有性价比的4K投影仪。那么到底哪一台更适合你。 首先放一张参数对比图,方便参数控研…

Leetcode—191.位1的个数【简单】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—191.位1的个数 实现代码 int hammingWeight(uint32_t n) {int ans 0;for(int i 0; i < 32; i) {if(n & ((long long)1 << i)) {ans;}}return ans; }运行结果 翻转比特1思路 就解法一的代码实现来说&am…

node服务部署vue3(ssr)单页面应用上线

博主最新开发了vue3新版的单页面服务端渲染的博客&#xff0c;框架用的vue3框架&#xff0c;vite4构建&#xff0c;在部署上线的时候遇到了一些问题&#xff0c;现在分享给大家。避免踩坑 node环境搭建 node安装包下载 因为我的服务器系统是linux&#xff0c;所以选择linux版本…

小DEMO:在vue中自定义range组件

1、组件样式 2、使用 import cSlider from /components/c-slider/c-slider.vue<div class"range"><cSlider v-model"cScale" change"cScaleChange" :min"1" :max"10"/> </div> 3、组件代码 <templa…

【数电】IEEE754浮点数

IEEE754浮点数 1.组成及分类2.计算(1)符号位(2)阶码(3)尾码(4)实际计算公式 1.组成及分类 &#xff08;1&#xff09;组成 IEEE754浮点数由三部分组成&#xff1a;符号位、阶码和尾码。 &#xff08;2&#xff09;分类 根据数据位宽分为三类&#xff1a;短浮点数、长浮点数和…

C++ opencv基本用法【学习笔记(九)】

这篇博客为修改过后的转载&#xff0c;因为没有转载链接&#xff0c;所以选了原创 文章目录 一、vs code 结合Cmake debug1.1 配置tasks.json1.2 配置launch.json 二、图片、视频、摄像头读取显示2.1 读取图片并显示2.2 读取视频文件并显示2.3 读取摄像头并写入文件 三、图片基…