Cocoa 如何在OS X上的现有NSView中打开新应用程序? 我在窗口中间有一个大的NSVIEW应用程序,在这个视图中,我想启动并显示“计算器.app”,这样它就被限制在NSVIEW和计算器上。应用程序的窗口大小被强制为这个NSVIEW的大小。这可能吗?你会怎么做

Cocoa 如何在OS X上的现有NSView中打开新应用程序? 我在窗口中间有一个大的NSVIEW应用程序,在这个视图中,我想启动并显示“计算器.app”,这样它就被限制在NSVIEW和计算器上。应用程序的窗口大小被强制为这个NSVIEW的大小。这可能吗?你会怎么做,cocoa,macos,Cocoa,Macos,(TextEdit.app等也有同样的问题。一般情况下,我希望这样做,但仅使用这些应用程序作为说明)这是不可能的。启动应用程序时,无法限制其对显示器的使用。应用程序创建窗口,而窗口不进入内部视图 (不可行或荒谬,但并非不可能。您可以在该视图中运行VM,或加载应用程序并拦截其对Cocoa库的使用。这些都是不合理的选择。) 但是:如果您专门编写一个应用程序来执行此操作,有多种方法可以将其显示嵌入到另一个应用程序的视图中。您能否为下面的注释提供指针?我很乐意学习如何…我会用IPC做的。使用shm_op

(TextEdit.app等也有同样的问题。一般情况下,我希望这样做,但仅使用这些应用程序作为说明)

这是不可能的。启动应用程序时,无法限制其对显示器的使用。应用程序创建窗口,而窗口不进入内部视图

(不可行或荒谬,但并非不可能。您可以在该视图中运行VM,或加载应用程序并拦截其对Cocoa库的使用。这些都是不合理的选择。)


但是:如果您专门编写一个应用程序来执行此操作,有多种方法可以将其显示嵌入到另一个应用程序的视图中。

您能否为下面的注释提供指针?我很乐意学习如何…我会用IPC做的。使用
shm_open
(和
ftruncate
mmap
)可以创建共享内存区域。然后,客户端应用程序将像素写入共享内存,服务器应用程序将这些像素发送到显示器。您需要一种方法来同步这两个进程,尽管严格来说这不是必需的。您甚至可以将Cocoa小部件绘制到内存的任意区域,并序列化事件以跨进程边界发送它们,但它会变成大量代码。