2009-01-09 46 views
0

我正在爲mac編寫一個C程序,並且我需要允許用戶選擇一個應用程序來發送一個apple事件。我可以使用NavCreateChooseFileDialog()創建導航窗口,但我無法啓用任何.app文件。如果我使用NavDialogSetFilterTypeIdentifiers來限制類型,它將只允許我選擇應用程序,如MS Office,在文件夾名稱中沒有.app。其他一切都變灰了。Macintosh C創建一個導航窗口來選擇一個應用程序

任何想法?

回答

0

確保在inOptions.optionFlags中爲NavCreateChooseFileDialog設置標誌kNavSupportPackages,並將'APPL'放入類型列表中(也可以使用該參數代替NavDialogSetFilterTypeIdentifiers(),這樣您將在10.3- ),你應該很好走,我只是試過。另外,如果你不介意使用Cocoa,你可以使用 - [NSOpenPanel runModalForTypes:[NSArray arrayWithObjects:@「app」,nil]](它也列出非應用程序應用程序)只有一個FSPathMakeRef((UInt8 *)[path fileSystemRepresentation],& fsRef,NULL);遠離FSRef。

請記住,在任何情況下,您獲得的文件都可能是別名,因此您必須嘗試解析別名。

0

請記住.app捆綁包是目錄,所以您可能需要啓用某種類型的允許目錄(或更可能的是,啓用捆綁包)選項。

對不起,我無法提供更具體的幫助。我從Carbon開始,但從未接觸導航服務。

+0

是的,我已經試過各種NavDialogSetFilterTypeIdentifiers settins和導航... chooseObject,並沒有幫助。 – 2009-01-12 15:30:39

0

這個工作對我來說:

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

[ panel runModal ] ; 
相關問題