我正在为mac编写一个C程序,我需要允许用户选择一个应用程序来发送一个苹果事件。我可以使用NavCreateChooseFileDialog()
创建一个导航窗口,但我无法启用任何.app文件。如果我使用NavDialogSetFilterTypeIdentifiers
限制类型,它只允许我选择文件夹名称中没有.app的应用程序,如MS Office。其他一切都是灰色的。
有什么想法吗?
答案 0 :(得分:0)
请记住.app包是目录,因此您可能需要启用某种类型的allow-directories(或者更可能是enable-bundles)选项。
对不起,我无法提供更具体的帮助。我从Carbon开始,但从未接触过导航服务。
答案 1 :(得分:0)
确保在inOptions.optionFlags中为NavCreateChooseFileDialog设置标志kNavSupportPackages,并将'APPL'放在类型列表中(可能仍然使用该param而不是NavDialogSetFilterTypeIdentifiers(),这样你将在10.3-上运行)你应该好好去,我只是尝试过。
或者,如果你不介意使用Cocoa,你可以使用 - [NSOpenPanel runModalForTypes:[NSArray arrayWithObjects:@“app”,nil]](也列出了非.app应用程序),然后你就是只有一个FSPathMakeRef((UInt8 *)[path fileSystemRepresentation],& fsRef,NULL);远离FSRef。
请记住,在任何一种情况下,您获得的文件可能是别名,因此您必须尝试解决别名。
答案 2 :(得分:0)
这对我有用:
NSOpenPanel * panel = [ NSOpenPanel openPanel ] ;
panel.allowedFileTypes = @[ (__bridge id)kUTTypeApplication ] ;
[ panel runModal ] ;