【发布时间】:2017-12-05 20:34:29
【问题描述】:
我正在编写一个 Windows 程序,并使用 wine (WineBottler) 在 Mac 上运行它
我希望能够从我的程序中启动 Finder 或其他 MacOS 应用程序。
我知道这是可能的,因为例如我可以用这条线启动 Safari:
ShellExecute(0, 'open', 'http://www.google.com', nil, nil, 0);
我想这是因为 Safari 是处理 URL 的默认应用程序。事实上,即使这样仍然会成功启动 Safari:
ShellExecute(0, nil, 'www', nil, nil, 0);
另一方面,传递其他字符串(例如文本文件的路径)将为这些文件类型启动基于 wine 的默认应用程序,如果有的话。
所以看起来上面可以启动基于客户操作系统(例如Safari)的应用程序,或基于wine的应用程序,视情况而定。
那么现在,例如,我怎样才能在给定文件夹中启动 Finder?或者我如何使用默认的 Mac 应用程序打开一个给定的文件,比如说一个 mp3 文件,而不是该文件类型的(不存在的)基于 wine 的应用程序?
注意:wine 启动 Safari 的方式可能是通过 wine 中包含的“iexplorer.exe”应用程序——可能是 wine 中 URL 的注册应用程序——但即便如此,问题仍然是一样的:“iexplorer.exe”是如何实现的。 exe”程序调用 Safari,或者 URL 的默认应用程序是什么?以及如何在 MacOS 中启动用于浏览文件夹的默认应用程序?或者打开mp3文件等等?
我花了最后两个小时尝试了我能想到的一切,但没有成功。我也无法在 wine 和 wine-faq 网站上找到解决方案。
我使用 Delphi,但任何基于 Windows API 的答案都可以。
有人可以帮忙吗?
谢谢!
【问题讨论】: