首页 > 系统相关 >electron 进程间通信

electron 进程间通信

时间:2024-11-26 10:13:49浏览次数:2  
标签:const title win 间通信 electron electronAPI 进程

预加载脚本

1.src-electron添加preload.js

2.将preload.js挂载到主进程中

// 创建浏览器窗口时,调用这个函数。
const createWindow = () => {
  const win = new BrowserWindow({
    width: 1600,
    height: 700,
    // title: '11111111',
    icon: join(__dirname, '../public/login1.png'),
    webPreferences: {
      // 引入预加载脚本
      preload: join(__dirname, 'preload.js')
    }
  })

  // development模式
  if (process.env.VITE_DEV_SERVER_URL) {
    win.loadURL(process.env.VITE_DEV_SERVER_URL)
    // 开启调试台
    win.webContents.openDevTools()
  } else {
    win.loadFile(join(__dirname, '../dist/index.html'))
  }

  Menu.setApplicationMenu(null)
}

 

主进程使用 BrowserWindow 创建实例,主进程销毁后,对应的渲染进程回被终止。主进程与渲染进程通过 IPC 方式(事件驱动)进行通信。

单向通信(使用使用 ipcRenderer.send API 发送消息,然后使用 ipcMain.on API 接收)

1.在预加载脚本中添加(会被挂载到window上)

const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld('electronAPI', {
  // 单向
  setTitle: (title) => ipcRenderer.send('set-title', title)
})

2.在主进程中接收

const {  ipcMain } = require('electron')
ipcMain.on('set-title', (event, title) => {
  // 获取当前的窗口
  const webContents = event.sender
  const win = BrowserWindow.fromWebContents(webContents)

  // 设置窗口标题  setTitle是electron内置的方法
  win.setTitle(title)
})

3.在渲染进程中调用

<script setup lang="ts">
const { electronAPI } = window

const changeTitle = () => {
  electronAPI.setTitle(title.value)
  console.log(electronAPI?.node())
  console.log(electronAPI?.chrome())
  console.log(electronAPI?.electron())
}
</script>

 

双向通信(使用使用 ipcRenderer.invokeAPI 发送消息,然后使用 ipcMain.handleAPI 接收) 

1.在预加载脚本中添加(会被挂载到window上)
const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld('electronAPI', {
  // 双向
  postMessage: () => ipcRenderer.invoke('post-message')
})

2.在主进程中接收

const {  ipcMain } = require('electron')
ipcMain.handle('post-message', async () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('支付宝到账100万元')
    }, 2000)
  })
})

3.在渲染进程中调用

<script setup lang="ts">
import { ref } from 'vue'
const message = ref('')

const { electronAPI } = window

const sentMessage = async () => {
  message.value = await electronAPI?.postMessage()
}

</script>

进程间通信官网:https://www.electronjs.org/zh/docs/latest/tutorial/ipc

 

electron更多可操作的功能(系统级)

 https://www.electronjs.org/zh/docs/latest/tutorial/examples

标签:const,title,win,间通信,electron,electronAPI,进程
From: https://www.cnblogs.com/ssszjh/p/18569484

相关文章

  • electron+ vue3基础模板
    1.创建一个vue3项目:npmcreatevite@latestelectron-desktop-tool 2.在安装electron之前需要先配置一下安装源 在根目录下新建一个 .npmrc文件strict-ssl=falseregistry=https://registry.npmmirror.com/electron_mirror=https://registry.npmmirror.com/-/binary......
  • HCIA-11 实现VLAN间通信
    目录技术背景使用路由器(物理接口、子接口)实现VLAN间通信使用路由器物理接口使用路由器子接口使用VLANIF技术实现VLAN间通信三层交换机和VLANIF接口VLANIF配置示例三层通信过程解析VLANIF转发流程传统交换二层组网中,默认所有网络都处于同一个广播域,这带了诸多问题。VLAN(VirtualLo......
  • 【linux学习指南】初识Linux进程信号与使用
    文章目录......
  • Linux系统进程
    系统进程【1】、进程基本概述当我们运行一个程序,那么我们将运行的程序叫进程​ PS1:当程序运行为进程后,系统会为该进程分配内存,以及进程运行的身份和权限​ PS2:在进程运行的过程中,服务器上会有各种状态来表示当前进程的指标信息程序和进程的区别​ 程序是数据和指令的集合......
  • 程序、进程和线程
    文章目录一、什么是程序、进程和线程?二、进程的状态三、进程调度四、进程间通信前言     本文主要介绍程序、进程和线程的基本概念和进程的一些相关知识。提示:以下是本篇文章正文内容,下面案例可供参考一、什么是程序、进程和线程?     程序(P......
  • 【Linux探索学习】第十六弹——进程地址空间:深入解析操作系统中的进程地址空间
    Linux学习笔记:https://blog.csdn.net/2301_80220607/category_12805278.html?spm=1001.2014.3001.5482前言:进程地址空间是操作系统进程管理的重要概念之一,它定义了进程在执行时所能访问的内存布局。理解进程地址空间不仅有助于掌握操作系统的运行原理,也为程序优化、内存管......
  • 交换机的vlan间通信方案
    1.vlan间通信:需要用三层设备(路由)(路由器,三层交换机,防火墙)站在设备设计层面,不同的vlan一般会设计成不同的网络(IP)方案一:采用路由器(FW),并且使用物理接口方案优点:设计技术最少,逻辑最简单缺点:浪费链路和接口,尤其vlan比较多的情况方案二:单臂路由方案采用路......
  • Linux—进程概念学习-03
    目录Linux—进程学习—31.进程优先级1.1Linux中的进程优先级1.2修改进程优先级—top2.进程的其他概念3.进程切换4.环境变量4.0环境变量的理解4.1环境变量的基本概念4.2添加环境变量—export4.3Linux中环境变量的由来4.4常见环境变量4.5和环境变量相关的命令4.6通过系统......
  • 探索计算机核心知识:程序、进程、线程与网络体系
     在计算机的世界里,程序、进程与线程是几个极为关键的概念。程序就像是一份详尽的建筑蓝图,它是一系列指令的集合,存储在计算机的硬盘等存储介质中,本身是静态的,例如我们日常使用的各种软件安装包所包含的代码就是程序。而进程则是程序的一次动态执行过程,当我们双击打开一个程序......
  • 进程与线程有什么区别?JS的单线程带来哪些好处?
    进程和线程的区别主要体现在以下几个方面:定义:进程:是一个独立的执行环境,拥有独立的内存空间、系统资源和执行流。可以把它理解为一个正在运行的程序或应用。线程:是进程内部的一个执行单元,共享进程的资源(例如内存空间),但拥有独立的执行栈和程序计数器。可以把它理解为进程......