我正在使用LSOpenItemsWithRole()
打开我的应用程序中的任何文件。它适用于Mac上具有默认应用程序的所有文件,但对于无法使用任何默认应用程序打开的文件,此方法返回错误kLSApplicationNotFoundErr
并且不执行任何操作。
对于这种情况,我希望我的应用程序启动“选择应用程序”对话框,以便最终用户可以从那里选择任何应用程序来打开该文件。只要双击直接打开任何此类文件,就会弹出此对话框。是否有任何直接的API调用来做同样的事情?
我不想使用Objective C调用,有没有办法使用Carbon API调用?
答案 0 :(得分:4)
您应该使用NSOpenPanel
,在Applications文件夹中启动用户,使用panel:shouldEnableURL:
委托方法过滤掉不以.app结尾的路径。您可以使用setAccessoryView:
向对话框添加任何自定义选项。当您在选择要使用的应用程序时单击“其他...”选项时,Finder正在执行此操作。
答案 1 :(得分:1)
我认为您可以使用NavCreateChooseFileDialog,NavCustomControl设置初始位置和NavDialogSetFilterTypeIdentifiers来过滤掉非应用程序。 (你为什么不想使用Objective-C?你知道你可以在一个应用程序中混合使用Carbon和Cocoa,对吗?)