electron [文档,问题] app.on('open-file')不起作用,对于Windows和Linux不清楚该怎么做,

hm2xizp9  于 3个月前  发布在  Electron
关注(0)|答案(3)|浏览(60)

预检清单

  • 我已阅读了此项目的 Contributing Guidelines
  • 我同意遵循此项目遵循的 Code of Conduct
  • 我在问题跟踪器中搜索了一个与我想要提交的功能请求相匹配的问题,但没有成功。

问题描述

我想在这里直接从文件打开应用程序:

当我打开它时,它会读取文本并执行操作。根据文档:

事件 'open-file' (MacOS)

当用户希望使用应用程序打开文件时发出。通常在应用程序已经打开且操作系统希望重用该应用程序打开文件时发出 open-file 事件。当文件被拖放到 dock 上且应用程序尚未运行时也会发出 open-file 事件。请确保在应用程序启动的早期阶段就监听 open-file 事件以处理这种情况(甚至在 ready 事件发出之前)。
如果要处理此事件,您应该调用 event.preventDefault()
在 Windows 上,您需要在主进程中解析 process.argv 以获取文件路径。
最后一行表示要使用此功能;然而,这方面的文档并不十分完善,我对这里的做法感到有些困惑。

建议解决方案

为文档添加一个示例。

7gs2gvoe

7gs2gvoe1#

有趣的是,今天我遇到了同样的问题,当我决定为我的应用程序实现文件关联时。open-file + electron-builderFileAssociation 组合非常不清楚应该如何使用。我很乐意为文档做出贡献,但我现在真的卡住了。

bnl4lu3b

bnl4lu3b2#

在Windows和Linux系统中,如文档所述,您应该使用process.argv[0]。示例代码:

app.whenReady().then(() => {
const file = process?.argv[1] // iirc you could require it if it's json 
const readedFile = fs.readFileSync(file)
win.webContents.send('file', readedFile)
})

然而,我认为他们应该使这个事件跨平台。将MacOS和Windows/Linux分开迫使您编写意大利面条式代码。而且我不喜欢意大利面!

taor4pac

taor4pac3#

嗯,这只是在启动时,当打开文件时,应用程序才会打开。
所以,正如你所说,统一一切会很好! 👍

相关问题