双击电子生成器打开时获取关联文件的路径

Get path of associated file when opened on double click Electron builder

信息:

我正在尝试制作一个可以编辑 .txt 文件的应用程序。我想在使用应用程序打开文本文件时获取它的路径(即用户选择使用我的应用程序打开 .txt )。我在 package.jsonbuild 中包含了以下内容:

"fileAssociations": [
    {
        "name": "Text Files",
        "description": "Plain Text File",
        "ext": [
            "txt"
        ]
    }
],

这会使应用程序打开文件,但是如何获取用于打开应用程序的文件的路径。我知道我必须用 process.argv 做点什么,但是我不知道如何使用它。我尝试了以下但没有成功:

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

如何获取文件的路径?

这是整个process的日志。正如我们在这里看到的,第二个 argv 是输入文件路径的路径。所以 process.argv[1] 就足够了文件路径。不知道为什么你找不到路径。

也许这来自您的 ipc 事件侦听器。这意味着 get-file-data 未正确触发。

如下图所示,我在此浏览器控制台中显示了此过程变量。这是我将 process 变量暴露给渲染器的方式。但这只是为了调试!建议不要在您的作品中这样做。

preload.js

process.once("loaded", () => {
    window.process = process;
});

main.js

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

您可以在渲染器上使用 window.processprocess

我设法获得了以下路径:

const { remote } = require('electron');

console.log(remote.process.argv[1])

此returns用于打开应用程序的文件的路径!