单击 Electron 应用程序中的按钮以在 VLC 中启动文件?

Click a button in Electron app to launch file in VLC?

我使用 Electron 和 Node 编写了一个小型媒体库管理器应用程序,主要作为学习框架的练习。该应用程序读取目录,将内容存储到本地 sqlite,然后将数据显示在格式良好的数据表中。但是,我想知道是否可以添加功能以在 VLC 中打开这些文件。搜索实际上只会在 Electron 应用程序本身中找到播放媒体文件的信息,但我希望能够连续单击一个按钮以在 VLC 或等效媒体播放器中打开相应的文件。有什么办法吗?

您实际上可以将 VLC 作为 Electron 应用程序的 "child process" 启动。

鉴于您已将媒体文件的路径存储在名为 filepath 的变量中,您可以像这样使用 NodeJS 的 child_process 模块:

var child_process = require ("child_process");

// Spawn VLC
var proc = child_process.spawn ("vlc", [ filepath ], { shell: true });

// Handle VLC error output (from the process' stderr stream)
proc.stderr.on ("data", (data) => {
    console.error ("VLC: " + data.toString ());
});

// Optionally, also handle VLC general output (from the process' stdout stream)
proc.stdout.on ("data", (data) => {
    console.log ("VLC: " + data.toString ());
});

// Finally, detect when VLC has exited
proc.on ("exit", (code, signal) => {
    // Every code > 0 indicates an error.
    console.log ("VLC exited with code " + code);
});

通过 proc.stderrproc.stdoutproc.on ("exit") 进行的所有这些数据记录都是可选的,但是如果您只想允许您的应用程序在以下位置生成一个 VLC 实例有一次,您可以在生成第一个实例时设置一个全局变量,将其删除(或将其设置为 false 或类似的)并将整个块包装在 if () {} 中,因此此代码仅允许一个实例为 运行一次宁。

请注意,以这种方式生成的子进程实际上独立于您的应用程序;如果您的应用程序在 VLC 关闭之前退出,VLC 将继续 运行.