本文概述
- 1.在主流程中设置事件监听器
- 2.从渲染器进程触发事件
- 3.请求和发送信息
1.在主流程中设置事件监听器你首先要做的是使用ipcMain模块在主进程中创建一个事件侦听器。它的工作原理非常简单明了, 你只需附加一个事件监听器, 一旦ipcRenderer模块(在视图中)请求执行它的回调, 便会执行该回调。
因此, 将事件侦听器附加到在主进程中运行的文件中, 例如main.js:
// In some file from the main process// like main.jsconst {ipcMain} = require('electron');
// Attach listener in the main process with the given IDipcMain.on('request-mainprocess-action', (event, arg) =>
{// Displays the object sent from the renderer process://{//message: "Hi", //someData: "Let's go"//}console.log(arg);
});
在回调内部, 你要在主流程中执行的代码。在这种情况下, 我们仅在控制台(启动Electron应用程序的控制台)中显示在渲染器(视图)进程中发送的数据。要知道如何触发此回调, 请检查以下步骤。
2.从渲染器进程触发事件现在, 如果你确定主进程中已经有一个IPC事件侦听器, 则可以在渲染器进程中使用其ID触发它。为了清楚起见, 我们将从脚本标记内的索引文件中执行它:
<
!doctype html>
<
html lang="en">
<
head>
<
meta charset="utf-8">
<
meta http-equiv="X-UA-Compatible" content="IE=edge">
<
title>
Electron Application<
/title>
<
!-- Use minimum-scale=1 to enable GPU rasterization -->
<
meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0, maximum-scale=1, minimum-scale=1">
<
/head>
<
body>
<
div id="app">
<
/div>
<
script>
/*** The code can be included in some JS file and included* via require or <
script>
in the renderer process*/const { ipcRenderer } = require('electron');
// Some data that will be sent to the main processlet Data = http://www.srcmini.com/{message:"Hi", someData: "Let's go"};
// Send information to the main process// if a listener has been set, then the main process// will react to the request !ipcRenderer.send('request-mainprocess-action', Data);
<
/script>
<
/body>
<
/html>
在这种情况下, 就像在视图中一样, 使用ipcRenderer模块, 你只需要从该模块执行send方法, 该方法期望将要触发的事件的ID作为第一个参数, 而将对象, 字符串, 布尔值, 包含要从渲染器进程发送到主进程的信息。
3.请求和发送信息如果要发送数据而不是仅执行回调, 则可以遵循相同的过程, 但是使用event.sender对象将信息从主过程发送到渲染器过程, 并在视图中添加带有IPCRenderer的侦听器:
主要过程
// In some file from the main process// like main.jsconst {ipcMain} = require('electron');
// Attach listener in the main process with the given IDipcMain.on('request-mainprocess-action', (event, arg) =>
{// Displays the object sent from the renderer process://{//message: "Hi", //someData: "Let's go"//}console.log(arg);
// Return some data to the renderer process with the mainprocess-response IDevent.sender.send('mainprocess-response', "Hello World!");
});
渲染程序
/** * The code can be included in some JS file and included * via require or <
script>
in the renderer process*/const { ipcRenderer } = require('electron');
// Some data that will be sent to the main processlet Data = http://www.srcmini.com/{message:"Hi", someData: "Let's go"};
// Add the event listener for the response from the main processipcRenderer.on('mainprocess-response', (event, arg) =>
{console.log(arg);
// prints "Hello World!"});
// Send information to the main process// if a listener has been set, then the main process// will react to the request !ipcRenderer.send('request-mainprocess-action', Data);
【如何在Electron Framework中的渲染器进程内执行主进程的功能】编码愉快!
推荐阅读
- 如何在Electron Framework中连接到MySQL数据库
- 如何在Electron Framework中提取.zip文件的内容(解压缩)
- 如何在Electron Framework中获取屏幕的宽度和高度
- 如何在Electron Framework中使用最小化,最大化和关闭控件创建自定义无框架窗口(无标题栏)
- 如何使用Electron Framework创建透明窗口
- 如何在Electron Framework中实现和启用语法和拼写检查器
- 如何使用Kali Linux通过字典攻击来入侵Wi-Fi网络(WPA/WPA2)
- 使用intent和get方法时Android应用程序崩溃
- 泄露的意图接收器rxAndroidble UPDATED