【问题标题】:Macintosh C Creating a navigation window to choose an appMacintosh C 创建导航窗口以选择应用程序
【发布时间】:2009-01-09 20:00:36
【问题描述】:

我正在为 mac 编写一个 C 程序,我需要允许用户选择一个应用程序来发送一个苹果事件。我可以使用NavCreateChooseFileDialog() 创建一个导航窗口,但我无法让它启用任何.app 文件。如果我使用NavDialogSetFilterTypeIdentifiers 限制类型,它将只允许我选择文件夹名称中没有 .app 的应用程序,例如 MS Office。其他所有内容都显示为灰色。

有什么想法吗?

【问题讨论】:

    标签: macos macos-carbon


    【解决方案1】:

    确保在 inOptions.optionFlags 中为 NavCreateChooseFileDialog 设置标志 kNavSupportPackages,并将“APPL”放在类型列表中(最好仍然使用该参数而不是 NavDialogSetFilterTypeIdentifiers(),这样您将在 10.3- 上运行)你应该很高兴,我刚试过。

    或者,如果你不介意使用 Cocoa,你可以使用 -[NSOpenPanel runModalForTypes:[NSArray arrayWithObjects:@"app", nil]] (它也列出了非 .app 应用程序),然后你只有一个 FSPathMakeRef((UInt8*)[path fileSystemRepresentation], &fsRef, NULL);远离 FSRef。

    请记住,无论哪种情况,您获得的文件都可能是别名,因此您必须尝试解析别名。

    【讨论】:

      【解决方案2】:

      请记住,.app 包是目录,因此您可能需要启用某种允许目录(或者更有可能是启用包)选项。

      很抱歉,我无法提供更具体的帮助。我从 Carbon 开始,但从未接触过导航服务。

      【讨论】:

      • 是的,我尝试了各种 NavDialogSetFilterTypeIdentifiers 设置和 nav...chooseObject,但没有帮助。
      【解决方案3】:

      这对我有用:

      NSOpenPanel * panel = [ NSOpenPanel openPanel ] ;
      panel.allowedFileTypes = @[ (__bridge id)kUTTypeApplication ] ;
      
      [ panel runModal ] ;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-27
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        • 1970-01-01
        • 2010-10-26
        • 1970-01-01
        • 2015-07-27
        相关资源
        最近更新 更多