Cocoa 如何在另一个程序的窗口上发布可可“表”?

Cocoa 如何在另一个程序的窗口上发布可可“表”?,cocoa,modal-dialog,daemon,interprocess,interaction,Cocoa,Modal Dialog,Daemon,Interprocess,Interaction,使用Apple OS X Cocoa框架,如何在另一个进程的窗口上发布工作表向下滑动模式对话框 编辑:澄清一点: 我的应用程序是一个查找程序扩展,用于执行Subversion版本控制。我的应用程序的一部分是一个插件,它是Finder的上下文菜单项;然而,我的大部分应用程序都在一个单独的守护进程中。出于几个原因,我们选择将几乎所有的代码放入守护进程中;该插件只定义菜单本身,苹果事件将传递给守护进程 有时,守护进程需要提示用户获取更多信息。它可以为此在屏幕上弹出一个窗口,但这是一个破坏性的随机位置,

使用Apple OS X Cocoa框架,如何在另一个进程的窗口上发布工作表向下滑动模式对话框

编辑:澄清一点:

我的应用程序是一个查找程序扩展,用于执行Subversion版本控制。我的应用程序的一部分是一个插件,它是Finder的上下文菜单项;然而,我的大部分应用程序都在一个单独的守护进程中。出于几个原因,我们选择将几乎所有的代码放入守护进程中;该插件只定义菜单本身,苹果事件将传递给守护进程

有时,守护进程需要提示用户获取更多信息。它可以为此在屏幕上弹出一个窗口,但这是一个破坏性的随机位置,在我看来,这里的工作流程是合法的模式,例如选择一个文件,从菜单中选择“提交”,提供提交注释,执行操作


进程间的协作(如传递某种引用)是可以接受的:两个进程都是我的,但我希望避免将工作表的代码绑定到主进程中。

真的,听起来您试图让进程间的通信发生在视图级别,而Cocoa通常不是这样工作的。如果你把你的层分开一点,事情就会容易得多

为什么不将工作表代码放入另一个流程中?它是视图代码,视图代码本质上是特定于流程的。在这里,正确的做法可能是向插件代码中添加某种通用的模式表支持,以及您的守护进程可以调用的IPC调用来调用该代码。如果您能让视图对象正常工作,那么尝试将视图对象发送到远程进程将是一场噩梦


你正在用这种方法对抗框架。

请不要这样做。尽可能使交互非模态。特别是在类似提交的情况下,在编写提交注释时能够浏览文件要好得多


OS X确实有窗口组,但我认为它们不能轻松地跨应用程序。

您不能在另一个进程中将工作表添加到窗口,因为在其他进程中,您最多只能访问Windows。

另一件要考虑的事情是,在OS X中,在同一个文件夹中可能有许多查找窗口不同于OS 9。即使您有足够的权限/API向Finder窗口添加工作表,但该窗口的模式也不会阻止用户继续处理文件


作为Mac电脑的长期用户,我个人的看法是,这种交互方式会让我非常恼火。

FYI:Finder的上下文菜单项是Snow Leopard中的DOA。您必须将它们作为服务重新编写。看见