Получение имени документа, который использовался для запуска пакета приложения в OS X - PullRequest
2 голосов
/ 11 мая 2009

Как написать приложение OS X Bundle (.app), как получить имя документа, вызвавшего запуск приложения?

Скажем, я связал .abcd с MyApp, когда я нажимаю на foo.abcd. MyApp запускается. Как я могу получить foo.abcd из MyApp? (Аргументы командной строки содержат только идентификатор процесса).

Ответы [ 2 ]

1 голос
/ 17 июня 2009

Похоже, вам нужен GUI инструментарий для этого, есть пример в idlelib / macosxSupport.py

def doOpenFile(*args):
    for fn in args:
        flist.open(fn)

# The command below is a hook in aquatk that is called whenever the app
# receives a file open event. The callback can have multiple arguments,
# one for every file that should be opened.
root.createcommand("::tk::mac::OpenDocument", doOpenFile)

Qt также имеет поддержку для этого.

1 голос
/ 11 мая 2009

Обычно они обрабатываются с помощью Apple Events . В частности, ваше приложение получит событие открытый документ . То, как вы справитесь с этим, зависит от типа приложения, которое вы пишете.

Если вы пишете приложение для документов, это легко: контроллер документов получает сообщение openDocumentWithContentsOfURL:display:error: (или openDocumentWithContentsOfFile:display: для систем, предшествующих Tiger), и обрабатывает это соответственно .

Для приложений Какао, которые не основаны на документах, делегату приложения будет отправлено сообщение application:openFiles:. Если делегат не отвечает на это, он будет пытаться отправить другие сообщения, пока делегат не ответит на одно (openTempFile:, openFiles: и openFile: в указанном порядке).

Вот документация для обработки событий Open Apple в Какао.

Для приложений Carbon я не могу вспомнить детали (давно я писал код Carbon), но если я правильно помню, вы бы установили обработчик событий Apple для событий kAEOpenDocuments с AEInstallEventHandler() , Подробнее см. в документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...