Electron: 主进程和渲染进程之间通信

// 渲染进程 向 主进程 异步通信// preload.js 预加载
const {ipcRenderer} = require('electron')
ipcRenderer.send('on-send-event', '这里是需要传递的参数') // 第一步ipcRenderer.on('on-resend-event', (e, data) => {console.log(data) // 打印的是ipcMain.on传递过来的参数:这里还是传递的参数
}) // 第四步也就是最后一步// main.js  主进程
const {ipcMain} = require('electron')
// 第二步
ipcMain.on('on-send-event', (e, data) => {console.log(data) // 打印的是ipcRenderer.send传递过来的参数:这里是需要传递的参数// 主进程主动给渲染进程传递信息(e.sender就是ipcMain)e.sender.send('on-resend-event', '这里还是传递的参数') // 第三步
})

// 渲染进程 向 主进程 同步通信// preload.js 预加载
const {ipcRenderer} = require('electron')
const val = ipcRenderer.sendSync('on-send-event', '这里是需要传递的参数') // 第一步
console.log(val) // 第四步, 同步接收第三步传递过来的参数:来自于主进程的同步信息// main.js  主进程
const {ipcMain} = require('electron')
// 第二步
ipcMain.on('on-send-event', (e, data) => {console.log(data) // 打印的是ipcRenderer.send传递过来的参数:这里是需要传递的参数// 主进程主动给渲染进程传递信息(e.sender就是ipcMain)e.returnValue = '来自于主进程的同步信息' // 第三步
})

主进程主动给渲染进程通信代码如下

// 主进程 向 渲染进程 通信// main.js  主进程
const {ipcMain, BroserWindow} = require('electron')
// 第一步,在自定义菜单Menu的click事件触发
click() {// BrowserWindow.getFocusedWindow:获取当前窗口BrowserWindow.getFocusedWindo().webContents.send('mtp', '来自主进程')
}// preload.js 预加载
const {ipcRenderer} = require('electron')// 第二步
ipcRenderer.on('mtp', (e, data) => {console.log(data) // 打印的是BrowserWindow.getFocusedWindo().webContents.send传递过来的参数:来自主进程}) 

实现从子窗口点击按钮后传递数据给父窗口的渲染进程实现逻辑:由子窗口的渲染进程传递消息给主进程,然后再由主进程传递消息给主进程的html渲染进程

// preload.js 预加载
const {ipcRenderer} = require('electron')ipcRenderer.send('mtp', '我是参数') 
ipcRenderer.on('mti', (e, data) => {// 接收到数据data
}) // main.js  主进程
const {ipcMain, BroserWindow} = require('electron')let mainWindowId = null;
function createWindow() {const mainWindow = new BrowserWindow({width: 1000,height: 800,webPreferences: {}})mainWindowId = mainWindow.id
}ipcMain.on('mtp', (e, data) => {// data:我是参数let mainWin = BroserWindow.fromId(mainWinId)mainWin.webContents.send('mti', data) // 主进程给渲染进程html传递数据
})

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

1+X应急响应(网络)日志分析:

日志分析: Web日志分析: http协议: http版本演变: http协议工作原理: http协议的特点: http请求报文: http请求方法: http响应报文: UserId:注册网站的序列号…

go-zero(二) api语法和goctl应用

go-zero api语法和goctl应用 在实际开发中,我们更倾向于使用 goctl 来快速生成代码。 goctl 可以根据 api快速生成代码模板,包括模型、逻辑、处理器、路由等,大幅提高开发效率。 一、构建api demo 现在我们通过 goctl 创建一个最小化的 HT…

计算机编程中的设计模式及其在简化复杂系统设计中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 计算机编程中的设计模式及其在简化复杂系统设计中的应用 计算机编程中的设计模式及其在简化复杂系统设计中的应用 计算机编程中的…

latex中,两个相邻的表格,怎样留一定的空白

目录 问题描述 问题解决 问题描述 在使用latex写论文时,经常表格需要置顶写,则会出现两个表格连在一起的情况。下一个表名容易与上面的横线相连,如何通过明令,留出一定的空白。 问题解决 在第二个表格的 \centering命令之后…

leetcode01——合并两个有序数组

0.本题学到的知识 1.python的操作中,哪些是在原数据上进行操作的? 新开辟的行为:list1list1[m:n] 原数据:list1[a:b]list1[m:n] 新开辟:list1list1list2 原数据:list1.append(list2[i]); list1.extend(list…

深度学习的艺术:揭秘卷积神经网络(CNN)的神秘面纱

深度学习的艺术:揭秘卷积神经网络(CNN)的神秘面纱 一、CNN的构成要素二、CNN的工作流程三、CNN的应用领域四、CNN的优势与局限 #引言: 在人工智能的璀璨星空中,卷积神经网络(CNN)如同一颗耀眼的…

Linux高阶——1116—环形队列生产者消费者

目录 1、环形队列 2、生产者消费者 环形队列数组实现代码 成功截图 1、环形队列 相比于线性队列,环形队列可以有效避免访问越界问题,使用下标访问队列元素时,到达末尾后下标归0,返回起始位置,使用下标运算即可 a…

学习大数据DAY61 宽表加工

目录 模型设计 加工宽表 任务调度: 大表 - 把很多数据整合起来 方便后续的明细查询和指标计算 模型设计 设计 建模 设计: excel 文档去编写 建模: 使用建模工具 PowerDesigner Navicat 在线画图工具... 把表结构给绘 制出来 共享\项目课工具\pd 加工宽表 数…

DBeaver MACOS 安装 并连接到docker安装的mysql

官网下载:Download | DBeaver Community 网盘下载:链接: https://pan.baidu.com/s/15fAhbflHO-AGc-uAnc3Rjw?pwdbrz9 提取码: brz9 下载驱动 连接测试 报错 null, message from server: "Host 172.17.0.1 is not allowed to connect to this M…

24首届数证杯(流量分析部分)

目录 流量分析 流量分析 1、分析网络流量包检材,写出抓取该流量包时所花费的秒数?(填写数字,答案格式:10) 3504相加即可 2、分析网络流量包检材,抓取该流量包时使用计算机操作系统的build版本是多少? 23F793、分析网络流量包检材&#x…

云服务器ECS经济型e实例和通用算力u1实例有啥区别?

阿里云服务器ECS经济型e实例怎么样?对比ECS通用算力型u1实例哪个更好?u1实例更好。阿里云服务器网aliyunfuwuqi.com二者均为云服务器ECS的实例规格,e实例是共享型云服务器,u1实例是独享型云服务器,何为共享&#xff1f…

QT中使用图表之QChart绘制柱状图

绘制条形(柱状)图,系列选择条形系列QBarSeries x轴选择条形图的种类轴QBarCategoryAxis 1、创建图表视图 //1、创建图表视图 QChartView * view new QChartView(this); //开启抗锯齿 view -> setRenderHint(QPainter::Antialiasing); …

Essential Cell Biology--Fifth Edition--Chapter one (8)

1.1.4.6 The Cytoskeleton [细胞骨架] Is Responsible for Directed Cell Movements 细胞质基液不仅仅是一种无结构的化学物质和细胞器的混合物[soup]。在电子显微镜下,我们可以看到真核细胞的细胞质基液是由长而细的丝交叉而成的。通常[Frequently],可…

【Linux】守护进程

目录 进程组 会话 作业控制 实现守护进程 我们在写完一些网络服务后,如果想让这个服务一直在云服务器的后台运行着,那该如何实现呢?其实就用到了这篇博客要讲的守护进程 进程组 我们首先需要了解进程组的概念,其实sleep 1000这…

nginx.conf配置文件中的命令

打开我们的conf文件 nginx.conf文件中,分为3大块: 全局块,就是events和http块之外的内容。设置nginx服务器整体运行的指令 格式为: 指令名 指令值 events块,用于配置与用户的网络连接的内容,对nginx的…

51单片机基础07 实时时钟-思路及代码参考1

目录 一、实现功能 二、思路1的分析 1、定时器0 2、外部中断0 3、主函数main 4、其他重要功能函数 一、实现功能 1、实现最基本的计时功能,显示时、分、秒,可以通过按键设置时间。 要求:时钟计时精确,按键操作不影响计时。…

vTESTstudio系列15--vTESTstudio-Doors的需求和测试用例的管理

最近有朋友在咨询vTESTstudio中怎么去跟Doors里面的需求去做好管理这方面的问题,临时加两篇文章介绍一下,Lets Go!!! 目录 1.Doors的配置: 1.1 安装Doors AddIn for vTESTstudio: 1.2 更新XML脚本: 1.3 导出需求的Trace Item…

基于Java Springboot编程语言在线学习平台

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

JDK安装报错“以下应用程序正在使用需要由此安装程序更新的文件”

(一)问题描述 我刚刚没有截图,这是我在网上看到的图: (二)可能的解决办法 1. 下方工具栏右键,打开任务管理器按钮,在进程中找到“Java Platform SE binary” 进程,右键结…

数据库第3次作业

学生表:Student (Sno, Sname, Ssex , Sage, Sdept) 学号,姓名,性别,年龄,所在系 Sno为主键 课程表:Course (Cno, Cname,) 课程号,课程名 Cno为主键 学生选课表:SC (Sno, Cno, Score)…