Node.js 双击Electron builder打开时获取关联文件的路径

Node.js 双击Electron builder打开时获取关联文件的路径,node.js,electron,electron-builder,Node.js,Electron,Electron Builder,资料: 操作系统:windows 10 电子版:最新版本 Electron Builder版本:最新版本 我正在尝试制作一个编辑.txt文件的应用程序。我想在使用应用程序打开文本文件时获取其路径(即,用户选择使用我的应用程序打开.txt)。我已经在我的包.json的构建中包含了以下内容: "fileAssociations": [ { "name": "Text Files", "d

资料:

  • 操作系统:windows 10
  • 电子版:最新版本
  • Electron Builder版本:最新版本
我正在尝试制作一个编辑
.txt
文件的应用程序。我想在使用应用程序打开文本文件时获取其路径(即,用户选择使用我的应用程序打开
.txt
)。我已经在我的
包.json的
构建中包含了以下内容:

"fileAssociations": [
    {
        "name": "Text Files",
        "description": "Plain Text File",
        "ext": [
            "txt"
        ]
    }
],
这将使应用程序与文件一起打开,但是如何获取用于打开应用程序的文件的路径。我知道我必须使用
进程.argv
做一些事情,但是我不知道如何使用它。我尝试了以下方法,但没有成功:

ipcMain.on('get-file-data',函数(事件){
var数据=null;
if(process.platform=='win32'&&process.argv.length>=2){
var openFilePath=process.argv[1];
console.log(数据)
win.webContents.send('openFile',openFilePath)
}
});

如何获取文件路径?

这是整个
过程的日志。正如我们在这里看到的,第二个argv是输入文件路径的路径。因此,
process.argv[1]
将足以创建文件路径。不知道你为什么找不到路径

这可能来自ipc事件侦听器。这意味着
get file data
未正确触发

如下图所示,我将在浏览器控制台中显示此流程变量。下面是我如何将
process
变量公开给渲染器的。但这只是为了调试!建议不要在生产中这样做

preload.js

process.once("loaded", () => {
    window.process = process;
});
mainWindow = new BrowserWindow({
    width: 1024,
    height: 728,
    minWidth: 800,
    minHeight: 750,
    webPreferences: {
        enableRemoteModule: true,
        preload: path.join(__dirname, "preload.js"),
    }
});
main.js

process.once("loaded", () => {
    window.process = process;
});
mainWindow = new BrowserWindow({
    width: 1024,
    height: 728,
    minWidth: 800,
    minHeight: 750,
    webPreferences: {
        enableRemoteModule: true,
        preload: path.join(__dirname, "preload.js"),
    }
});
您可以在渲染器上使用
window.process
process


我通过以下方式获得了路径:

const{remote}=require('electron');
console.log(remote.process.argv[1])

这将返回用于打开应用程序的文件的路径

你能给我看一段代码吗?我觉得这很有趣confusing@AlexHawking是什么让你感到困惑?我只是将这个
过程
变量公开给渲染器,然后记录下来。你能解释一下你是如何得到这个过程变量的吗?和我的代码一样吗?(抱歉,如果这是一个愚蠢的问题)谢谢你的例子。。。这就是当我运行
console.log(window.process.argv[1])
时发生的情况:我得到以下
--type=renderer
Hmm,在这种情况下,试着记录整个
过程
“Version latest”并不是一条很好的信息,这个问题(希望)几年后仍会出现在这个网站上,说最新的不是一个好主意。