First, 我找到了一对 https://stackoverflow.com/questions/550329/how-to-open-a-file-with-the-default-associated-program of java具体问题 https://stackoverflow.com/questions/526037/java-how-to-open-user-system-preffered-editor-for-given-file以及对此的解答。我正在寻找更多“本机”但跨平台的解决方案,使用 C、C++、某种 shell 脚本,或者就我而言,使用 Qt。
所以问题是,是否有标准的、跨平台的方法来以编程方式打开某些文件类型的关联应用程序。或者至少查明是否有关联的应用程序并能够找到并启动它们?
我所说的跨平台是指 Windows、OSX 和 linux (gnome/kde)。用例是拥有一个数据库,其中存储的文件为 blob,将在三个不同的目标上读取。
我不知道有什么跨平台的方式。
在 Windows 中,有start
命令,这将启动关联的默认应用程序。 (例如。start foo.doc
将启动默认的 Word 文档编辑器,start http://StackOverflow.Com/
默认网络浏览器和start mailto:[email protected] /cdn-cgi/l/email-protection
默认邮件应用程序。)
在 OS X 中有open
命令,它做同样的事情。
Linux 只是一个操作系统内核。操作系统内核不知道有关“文件类型”或“MIME 类型”或“关联应用程序”或类似内容的任何信息。所以,这样的事情简直就是不可能存在对于Linux。
Freedesktop 组有一个规格xdg-open command https://Portland.FreeDesktop.Org/doc/xdg-open.html,它适用于所有 Freedesktop 兼容的图形桌面(无论是 Linux、FreeBSD、NetBSD、OpenBSD、DragonflyBSD、OpenSolaris 还是其他桌面)。但是,显然不能保证它可以在非 Freedesktop 系统上工作,并且当然不保证在非图形系统上工作。
在所有三种情况下,这是一个命令行应用程序,而不是 C 或 C++ API,但您显然可以通过以下方式调用它system
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)