如何在渲染器中处理来自应用程序菜单的事件
How to process events from the application menu in the renderer
当用户select菜单选项
时,电子应用程序的主进程接收事件
const menu = {
label: 'Foo',
submenu: [
{
label: 'Bar',
click: () => {
// execute function in render process
},
},
]
});
Menu.setApplicationMenu(Menu.buildFromTemplate(menu));
这应该在渲染过程中执行一个函数。
如何拦截渲染进程中的菜单事件或从主进程执行渲染进程中的函数?
您可以在单击菜单项时向渲染器发送消息,然后在渲染器收到消息后执行您想要的操作。
本次通讯名为IPC, Inter Process Communication
菜单项如下所示:
{
label: 'Bar',
click: () => {
win.webContents.send('menuItemClicked', 'Clicked!');
},
},
然后将此代码添加到您的渲染器中:
var ipcRenderer = require('electron').ipcRenderer;
ipcRenderer.on('menuItemClicked', function (evt, message)
{
console.log(message); // Outputs: Clicked!
// Do your renderer stuff here.
});
瞧!
当用户select菜单选项
时,电子应用程序的主进程接收事件 const menu = {
label: 'Foo',
submenu: [
{
label: 'Bar',
click: () => {
// execute function in render process
},
},
]
});
Menu.setApplicationMenu(Menu.buildFromTemplate(menu));
这应该在渲染过程中执行一个函数。
如何拦截渲染进程中的菜单事件或从主进程执行渲染进程中的函数?
您可以在单击菜单项时向渲染器发送消息,然后在渲染器收到消息后执行您想要的操作。
本次通讯名为IPC, Inter Process Communication
菜单项如下所示:
{
label: 'Bar',
click: () => {
win.webContents.send('menuItemClicked', 'Clicked!');
},
},
然后将此代码添加到您的渲染器中:
var ipcRenderer = require('electron').ipcRenderer;
ipcRenderer.on('menuItemClicked', function (evt, message)
{
console.log(message); // Outputs: Clicked!
// Do your renderer stuff here.
});
瞧!