【问题标题】:Emitting Main to Main event from electron menu从电子菜单发出 Main 到 Main 事件
【发布时间】:2023-03-18 17:39:01
【问题描述】:

我的主进程中有一个“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
})

【问题讨论】:

    标签: electron


    【解决方案1】:

    我不确定我是否理解您所描述的问题 - 但这是我所做的:

    函数showProjectPicker 存在于main.js 中,并由如下所示的菜单操作调用。如果我想从renderer 进程中调用它,我会通过 IPC 发送一条消息。

    {
      label: 'File',
      submenu: [
          { label: 'Open Project...', click: () => { showProjectPicker(); }, accelerator: 'CmdOrCtrl+o' }
        ]
    }
    

    【讨论】:

      【解决方案2】:
      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'
                  }          
              ]
          }
      ])
      

      【讨论】:

      • 这是如何引发主要事件的?您正在直接调用回调函数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多