如何使用 ipcRenderer 和 ipcMain 获取当前 BrowserWindow?

时间:2021-07-01 11:55:15

标签: node.js electron

我正在用电子编写程序。 这个程序有多个窗口。 现在我想在一个 BrowserWindow 中创建一个 OpenDialog。 我使用 preload、ipcRenderer 和 ipcMain 来设计这个功能。

preload.js

contextBridge.exposeInMainWorld(
    "renderer", {
        'openDialog': (View) => {
            ipcRenderer.invoke('openDialog', {
                'properties': ['openFile'],
                'filters': [{
                    'name': 'Text Files',
                    'extensions': ['txt']
                }, {
                    'name': 'Markdown Files',
                    'extensions': ['md', 'markdown']
                }, {
                    'name': 'All',
                    'extensions': ['*']
                }]
            }).then(...)
        }
    }
)

main.js

ipcMain.handle('openDialog', (event, args) => {
    return dialog.showOpenDialog(event.sender, args)
})

但 event.sender 是 WebContents,而不是 BrowserWindow。 如何获取 BrowserWindow?

我可以通过检查每个 BrowserWindow 的 WebContents 来获取它。但我认为这不是一个好主意。

0 个答案:

没有答案