我正在尝试让我的程序自动关联某些文件扩展名,但是我不确定如何在MacOSX中执行此操作.我不是问如何将程序与GUI中的文件扩展名相关联,我希望能够将它编程到我的程序中.
我已经google了很多,但仍然找不到好的解决方案:/
所以,我将一个复杂的Qt5应用程序(某些网络服务的客户端)移植到Mac OS X(10.7.0"Lion"及更高版本).
我需要处理自定义文件*.xyz和自定义URL方案xyz://.
好的,Qt5有QFileOpenEvent类来处理OS X适当的事件.
但是:此事件仅在应用程序事件循环开始后才会到达(显然)!
我需要"捕获"并在 main启动之前处理OS X'文件打开事件,因为程序逻辑仅用于处理命令行参数处理.
简化的main功能代码:
int main(int argc, char[]* argv)
{
QApplication app( argc, argv );
QStringList arguments = app.arguments();
if( arguments.count() == argc ) arguments.removeFirst();
Logic appLogic( NULL, &app );
app.installMessageHandler( &appLogic );
// The problem:
// **This function will always called earlier than the any event**
if( ! appLogic.start( arguments ) ) return 0;
// Start processing of …Run Code Online (Sandbox Code Playgroud) 我知道如何手动将特定文件或通用扩展名与特定 OS X 应用程序相关联。(获取信息 > 打开方式 > 其他...)
我知道如何在 OS X 中将带有扩展名的文件拖放到“不受支持”的应用程序上。(拖动应用程序时按住命令选项)
作为 OS X 应用程序的作者,我如何指定我的应用程序知道如何打开特定的文件扩展名?
.app其拖入 Applications 文件夹后立即使用我的应用程序打开。我看过“MacOSX - 文件扩展名与应用程序关联 - 以编程方式”,但我不想让用户在安装后运行安装程序或 shell 脚本。