Mac OS/X上的C程序如何得知用户双击打开了相关文件?

Mac OS/X上的C程序如何得知用户双击打开了相关文件?,c,macos,file-association,C,Macos,File Association,通常在Obj C中,NSAPlicationLegate处理此问题。但是在C语言中我该怎么做呢? 我想我问的是,在OS/X出现之前,Mac程序是如何做到这一点的? 谢谢。在Mac OS 9中,应用程序在启动时(或以后)通过注册并在启动时收到一个'odoc'苹果事件来打开文档。这在C语言中是不寻常的,我强烈建议您不要尝试。特别要注意的是,除非您的应用程序具有碳事件循环,否则这不可能正常工作 在此之前,还有一种机制,即在堆栈顶部的内存块中指定应用程序启动时打开的文件。在Mac OS 9中,应用程序在

通常在Obj C中,NSAPlicationLegate处理此问题。但是在C语言中我该怎么做呢? 我想我问的是,在OS/X出现之前,Mac程序是如何做到这一点的?
谢谢。

在Mac OS 9中,应用程序在启动时(或以后)通过注册并在启动时收到一个
'odoc'
苹果事件来打开文档。这在C语言中是不寻常的,我强烈建议您不要尝试。特别要注意的是,除非您的应用程序具有碳事件循环,否则这不可能正常工作


在此之前,还有一种机制,即在堆栈顶部的内存块中指定应用程序启动时打开的文件。在Mac OS 9中,应用程序在启动时(或以后)通过注册并在启动时接收苹果事件来打开文档。这在C语言中是不寻常的,我强烈建议您不要尝试。特别要注意的是,除非您的应用程序具有碳事件循环,否则这不可能正常工作


在此之前,还有一种机制,即在堆栈顶部的内存块中指定应用程序启动时打开的文件。这种机制在OS X上已经不存在了,所以今天它已经无关紧要了。

我应该指出,NapplicationDelegate只是处理它,实际上并没有检测到它。(它接收到一个事件)你的应用程序必须是纯C有什么原因吗?如果您已经有了一个标准的CFRunLoop,那么初始化ObjC运行时非常简单。如果不是的话(除非你有一个碳事件循环),很可能没有简单的方法来做你想做的事情,我应该指出,nsApplicationLegate只是处理它,它实际上并没有检测到它。(它接收到一个事件)你的应用程序必须是纯C有什么原因吗?如果您已经有了一个标准的CFRunLoop,那么初始化ObjC运行时非常简单。如果没有(除非你有一个碳事件循环),很可能没有简单的方法来做你想做的事情,句号。正如abarnet在上面提到的,这实际上取决于你的应用程序有什么类型的事件循环(如果有的话)。正如abarnet在上面提到的,这实际上取决于你的应用程序有什么类型的事件循环(如果有的话)。