如何在Mac上启动“选择应用程序”对话框?

时间:2010-05-20 10:52:10

标签: macos macos-carbon

我正在使用LSOpenItemsWithRole()打开我的应用程序中的任何文件。它适用于Mac上具有默认应用程序的所有文件,但对于无法使用任何默认应用程序打开的文件,此方法返回错误kLSApplicationNotFoundErr并且不执行任何操作。

对于这种情况,我希望我的应用程序启动“选择应用程序”对话框,以便最终用户可以从那里选择任何应用程序来打开该文件。只要双击直接打开任何此类文件,就会弹出此对话框。是否有任何直接的API调用来做同样的事情?

我不想使用Objective C调用,有没有办法使用Carbon API调用?

2 个答案:

答案 0 :(得分:4)

您应该使用NSOpenPanel,在Applications文件夹中启动用户,使用panel:shouldEnableURL:委托方法过滤掉不以.app结尾的路径。您可以使用setAccessoryView:向对话框添加任何自定义选项。当您在选择要使用的应用程序时单击“其他...”选项时,Finder正在执行此操作。

答案 1 :(得分:1)

我认为您可以使用NavCreateChooseFileDialog,NavCustomControl设置初始位置和NavDialogSetFilterTypeIdentifiers来过滤掉非应用程序。 (你为什么不想使用Objective-C?你知道你可以在一个应用程序中混合使用Carbon和Cocoa,对吗?)