首页 > 解决方案 > ElectronJS:将文件拖放到 Windows 任务栏上的电子应用程序图标上

问题描述

我正在尝试允许将文件拖到 Windows 中的电子应用程序中。有几件事起作用:

但是,我希望能够在应用程序运行时将文件拖动到 Windows 任务栏上的电子应用程序图标上。当我进行 SHIFT 拖动时,工具提示显示“使用 Electron 打开”,但是当我放下时……什么都没有发生。我已经尝试在“第二个实例”处理程序中进行控制台日志记录,这是我期望触发的......但没有。

app.on("second-instance", (event, argv) => {
    log.info("HERE");
    // Someone tried to run a second instance, we should focus our window.
    if (argv.length >= 2) {
        const urlPath = encodeURI(`file:///${argv[argv.length - 1]}`);
        openDeepLink(`app://open-image-url?location=${urlPath}`, mainWindow);
    }

    if (mainWindow) {
        if (mainWindow.isMinimized()) {
            mainWindow.restore();
        }
        mainWindow.focus();
    }
});

(当然,深层链接短代码并不是真正的“应用程序”)。"HERE" 的 log.info 永远不会触发(我已经测试过 log.info 可以在其他地方工作,以防万一,确实如此!)。

我正在运行:Windows 10(完全更新)电容器社区/电子:1.3.1 电子:11.0.1

标签: javascriptdrag-and-dropelectron

解决方案


对 - 经过更多时间查看 - 我发现了问题:

我在 app.on("ready") 中有以下代码:

    if (Notification.isSupported()) {
        updateNotify = new Notification({
            title: "Update Available",
            body: "An update is available. It will be installed when you exit"
        });
    }

如果需要,稍后会调用 updateNotify.show()。事实证明,当我从“就绪”处理程序中删除该代码时,拖放工作正常。我现在已将相同的代码放入“更新下载”处理程序中,一切正常。不太清楚为什么代码破坏了拖放,但这似乎解决了它!


推荐阅读