我在我的主进程中有一个'select-current-project‘的监听器。当从渲染器进程触发时,它工作得很好,但是我如何从菜单中发出相同的事件?
菜单在默认createWindow()
中创建
var menu = Menu.buildFromTemplate([
{
label: 'Menu',
submenu: [
{
label:'Open',
click() {
// neither of these works
// app.emit('select-current-project')
// ipcRenderer.send('select-current-project')
},
accelerator: 'CmdOrCtrl+O'
},
{
label:'Exit',
click() {
app.quit()
}
},
]
}
])
我的事件处理程序
ipcMain.on('select-current-project', async (event, arg) => {
// code
})
发布于 2020-07-08 21:55:48
我不确定我是否理解了你所描述的问题--但我是这样做的:
函数showProjectPicker
存在于main.js
中,由菜单操作调用,如下所示。如果我想从renderer
进程调用它,我会通过IPC发送一条消息。
{
label: 'File',
submenu: [
{ label: 'Open Project...', click: () => { showProjectPicker(); }, accelerator: 'CmdOrCtrl+o' }
]
}
发布于 2020-07-08 23:47:40
ipcMain.on('select-current-project', async (event, arg) => {
onSelectCurrentProject()
})
const onSelectCurrentProject = async (event, arg) => {
if(event !== Null) {
// This is for rendere
} else {
// For menu event in your case
}
}
var menu = Menu.buildFromTemplate([
{
label: 'Menu',
submenu: [
{
label:'Open',
click() {
onSelectCurrentProject(null, args);
},
accelerator: 'CmdOrCtrl+O'
}
]
}
])
https://stackoverflow.com/questions/62792093
复制相似问题