获取用于在OS X上启动应用程序包的文档的名称

2024-04-29 01:38:06 发布

您现在位置:Python中文网/ 问答频道 /正文

编写OS X捆绑应用程序(.app)时,如何获取导致应用程序启动的文档的名称?在

假设我已将。与MyApp关联,当我单击食物abcdMyApp已启动。 我怎样才能得到食物abcd从MyApp内部?(命令行参数仅包含进程id)。在


Tags: 命令行文档名称idapp应用程序参数进程
2条回答

一般来说,这些都是通过苹果事件来处理的。特别是,您的应用程序将收到一个打开文档事件。如何处理它取决于您编写的应用程序的类型。在

如果您正在编写一个基于文档的应用程序,这很简单:文档控制器接收到一条openDocumentWithContentsOfURL:display:error:消息(对于pre-Tiger系统,openDocumentWithContentsOfFile:display:),并将handle this accordingly。在

对于不基于文档的Cocoa应用程序,将向应用程序委托发送一条application:openFiles:消息。如果委托没有对此做出响应,它将尝试发送其他消息,直到代理响应一条消息(openTempFile:openFiles:,和{},按顺序排列)。在

Here's the documentation用于在Cocoa中处理打开的苹果事件。在

对于Carbon应用程序,我真的记不起细节了(自从我写了Carbon代码以来已经有一段时间了),但是如果我没记错的话,您应该为带有AEInstallEventHandler()kAEOpenDocuments事件安装一个Apple事件处理程序。有关详细信息,请参见the documentation。在

看起来您需要一个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也有support。在

相关问题 更多 >