【问题标题】:Open external file with OS' default application (docx with Word, etc.) using NodeJS and Electron使用 NodeJS 和 Electron 使用操作系统的默认应用程序(带有 Word 的 docx 等)打开外部文件
【发布时间】:2016-06-20 19:16:18
【问题描述】:

我将 NodeJS/Electron 用于桌面应用程序。

我想做的是用它的操作系统的默认应用程序打开一个文件,比如用 Word 的 .docx。

到目前为止,我尝试的是使用 child_process.spawn、.exec 或 .execFile 的方法,但我什么也没得到。

这是我的实际代码:

var fs = require('fs'),
    cp = require('child_process');

cp.spawn(__dirname + '/test.docx');

提前致谢。

【问题讨论】:

标签: javascript node.js electron


【解决方案1】:

使用Electron的shell模块提供的openItem()函数,例如:

const shell = require('electron').shell;
const path = require('path');

shell.openItem(path.join(__dirname, 'test.docx'));

根据文档,shell 模块应该在主/浏览器和渲染器进程中都可用。

注意:Electron 9.0.0 shell.openItem API 已替换为异步 shell.openPath API。 shell.openPath docs

【讨论】:

  • 我们能得到一个关闭的信号吗?是否有回电我会知道应用程序已关闭?
  • @django 不,这是一场火灾,然后忘记之类的事情。如果您想检测外部应用程序是否已关闭,您需要使用 child_process.spawn 生成它。
  • @VadimMacagon 我一直在尝试ls.on('close' 事件,但是一旦打开 ms word,它就会被触发。你能发布示例还是我应该为它创建另一个问题?
  • 是否可以显示可以打开文件的应用程序/软件,而不是在默认应用程序中打开它。示例 svg 文件默认在浏览器中打开。我想让用户选择另一个应用程序,如记事本或其他代码编辑器等。这可能吗?
【解决方案2】:

在此处为较新的电子版本 (9+) 导入添加 sn-p:

import { shell } from 'electron';
import path from 'path';

shell.openPath(path.join(__dirname, 'test.docx'));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2016-08-11
    • 2022-06-20
    • 1970-01-01
    • 2019-07-20
    相关资源
    最近更新 更多