2010-07-25 6 views
0

나는 열어보기 위해 외부 응용 프로그램에 전달하려는 파일 이름 배열을 가지고 있습니다. 나는 다음 중 하나를 수행하고 싶습니다 :코코아 관련 앱으로 여러 파일 열기

가) 어떻게 든 관련 응용 프로그램이 모든 파일을 열 OSX를 지시하지만, 대상 응용 프로그램의 openFiles NSApplication 대리인 방법 B) 다음을 열 응용 프로그램을 지정을 호출해야합니다 파일과 함께 (또한 openFiles도 호출합니다.)

기본적으로 이러한 파일은 대상 응용 프로그램과 연결되므로 실현할 솔루션은 중요하지 않습니다. 어떻게 이런 일을하나요?

답변

3

파일을 모두 한 번에 열려면 공유 된 NSWorkspace 개체 an openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers: message을 보내거나 the LSOpenURLsWithRole function 또는 the LSOpenFromURLSpec function으로 전화하십시오. 어느 쪽이든 열려고하는 항목에 URL 배열을 전달합니다.

이들 각각을 사용하면 사용할 특정 응용 프로그램을 식별 할 수 있습니다. NSWorkspace는 번들 식별자로 지정할 수 있으며, 두 개의 Launch Services 기능을 사용하면 URL 또는 FSRef을 특정 애플리케이션 번들에 제공 할 수 있습니다.

... 그것을 필요로 할 수없는 대상 응용 프로그램의 openFiles NSApplication 대리인 방법

를 호출해야하기 때문에 (가) 아마하지 않는 경우, 문서 기반이 될 수있는 응용 프로그램 NSApplication 델리게이트를 가지고있다하더라도, 그러한 델리게이트는 아마도 application:openFiles:에 응답하지 않을 것이며 (b) 애플리케이션은 Cocoa 기반이 아닐 수도 있습니다.이 경우 Open Documents Apple Event를 직접 처리 할 수 ​​있습니다. 이 중 어느 것도 응용 프로그램의 비즈니스가 아니므로 걱정하지 마십시오.

+0

이 응용 프로그램을 만들고 openFiles : 메서드를 구현 중이므로이 경우를 요구할 수 있습니다. 따라서 대상 응용 프로그램에서 모든 파일 이름을 한 번에 검색 할 수 있다면 좋을 것입니다. – Marius

+0

Marius : 충분합니다. 따로 따로가 아니라 모든 문서를 한 번에 열면 수신하는쪽에 하나의'applictaion : openFiles :'메시지를 받아야합니다. 또한 GrowlHelperApp로 문서를 여는 것과 비슷한 작업을하기 때문에 Growl 프레임 워크의 소스 코드를 읽을 수도 있습니다. 특히 우리가하는 것과 동일한 열기 플래그를 사용하고 싶을 것입니다. –

+0

감사합니다. 당신의 제안을 시도 할 것입니다. – Marius