我正在寻找一种方法将另一个应用程序嵌入到我自己的视图中。在OS X子视图中嵌套应用程序
业务原因是该公司有许多小型Electron apps(基本上是一个小型便携式网站程序与自包含浏览器),该公司希望嵌入OS X程序内。这些电子应用程序将完美整合并无缝地显示在子视图内,因此它们看起来像我们较大程序中的小网页框架。
我想通过编程的方式打开另一个程序作为子视图是最容易的,但我会尽我所能。也许甚至捕获它NSWindow莫名其妙。 (Electron source is available so it is easily discoverable)。也许一种方法可以将我的其他程序停靠在我的内部,或者(更加绝望)找到它的视图并发送命令来限制它的大小和位置。
到目前为止,我发现所有这些都不是真的可行。我发现我可以采取更加绝望的过程。我可以启动一个流程,找到它的视图,并将其放置在我的显示器上的一个点上;当窗口被移动或者内容被滚动时发送消息来移动另一个窗口。但是,这并不是真正的整合,菜单保持独立等,但我无法将其纳入。
任何想法或有帮助的实施细节?
编辑1:谢谢你的回应。如果我们可以让电子应用程序以某种方式暴露他们的NSWindow,那么如何?这可以被利用吗?我想应用程序可以发送消息和(不知何故,确切地说)来设置父窗口在这一个。在Windows API中,它更容易,因为你可以在任何东西上调用SetParent,甚至在不同进程中的东西。但可可似乎更困难。
这个答案的几个部分是绝对不正确的。你不能在线程中运行NSApplication的多个实例,并且NSEvent在这里没有任何我知道的应用程序。 – duskwuff
@duskwuff我不是说在线程中创建NSApplication实例,更新了我的答案。 NSEvent我记得你可以在全局捕获鼠标事件,但你将如何使用它,我不确定 – PnotNP
使用fork/exec来启动新的进程会启动子程序作为单独的应用程序,OP已经说过他们试过(并且wasn满足他们的需求)。 – duskwuff