问答详情
源自:5-5 主窗口播放音乐编码(二)

在main.js中使用ipcMain监听事件,为什么有的地方可以用event.sender去发送信息,有的地方却只能用mainWindow来发送呢?

在main.js中使用ipcMain监听事件,为什么在有的地方可以用event.sender去发送信息,有的地方却只能用mainWindow来发送呢?

ipcMain.on("select-music-files", (event, params) => {    
    dialog.showOpenDialog({        
        "properties": ["openFile", "multiSelections"], 
        "filters": [{ "name": "Music", "extensions": ["mp3"] }]
     })
     .then(res => {
         if (!res.canceled && res.filePaths.length > 0) {
             // 这里却可以用event.sender
             event.sender.send("selected-music-files", { "musicFiles": res.filePaths });
         }
     })
     .catch(err => {      console.log(err);    });  });  ipcMain.on("import-music-files", (event, params) => {    if (Array.isArray(params.musicFiles) && params.musicFiles.length > 0) {      const musicFiles = musicDataStore.addTracks(params.musicFiles);      // 这里尝试过,event.sender无法发送      mainWindow.send("render-music-files", { musicFiles });    }  });  ipcMain.on("delete-music-file", (event, params) => {    const musicFiles = musicDataStore.deleteTrack(params.id);    // 这里尝试过,event.sender无法发送    mainWindow.send("render-music-files", { musicFiles });  });


提问者:_Jack_Han_ 2020-02-17 00:10

个回答

  • 幕布斯2177642
    2020-02-18 16:41:40
    已采纳

    mainWindow指定发送,而event.sender进程内回调发送。

    就是一个页面内发信息发送到main.js,然后用event.sender进行进程内在发送回去。

    而mainwindow实际上是新建的一个进程窗口,我们就指定给他发送了。

    望采纳,我也是刚学习。