英语轻松读发新版了,欢迎下载、更新

【求助】跨进程操作NSWindow

wenssh 发布于 2015年08月05日
无人欣赏。

初接触OS X开发,遇到了一个与NSWindow相关的问题:

目前我有一个场景需要在一个进程中控制另外一个进程中的创建的NSWindow(通过addchild来建立父子关系),查阅了相关的文档没有找到这方面的资料。在windows平台上是可以通过窗口句柄来SetParent完成这个操作的,因为window平台的句柄是可以跨进程使用的,不知道OS X有没有方法做到呢,如果有这方面的资料或者文档也可以贴链接给我,多谢~

共6条回复
tinyfool 回复于 2015年08月05日

你先把你的场景讲清楚吧

wenssh 回复于 2015年08月05日

1楼 @tinyfool 是这样的,我在windows上的一个应用程序,是有两个进程的,子进程创建了一个窗口(子窗口)来显示一部分内容,子进程的逻辑只负责这一个窗口内容的绘制;主进程也有一个窗口(父窗口),这个窗口的部分区域显示子进程窗口的内容,其他区域还有一些别的控件,主进程主要负责管理两个窗口的关系,同时还有一些别的控件逻辑。两个窗口通过windows的窗口句柄建议父子关系。

现在我准备把这个程序移植到OS X上来,但是没有找到能够跨进程建立窗口父子关系的方法;而在Windows中, 窗口句柄是可以跨进程使用的,通过窗口句柄就可以建立窗口之间的父子关系了。OS X中有没有一种类似的机制,能够让一个进程创建的NSWindow在另外一个进程中去setParent、addChild?

不知道我有没有描述清楚这个问题,如果没有,还请提出~

tinyfool 回复于 2015年08月07日

2楼 @wenssh 为啥需要连个进程?而且进程间通讯有很多方法,干嘛要一个进程操作另外一个进程的窗口呢?

这个对系统安全不利,方法我估计可以找到,只是觉得方案比较奇怪

wenssh 回复于 2015年08月07日

3楼 @tinyfool 嗯,在windows平台是把子进程当作一个服务,提供一个窗口显示内容,外部需要集成这个服务的应用作为父进程,直接通过设置窗口的父子关系,让子进程的窗口显示在父进程的窗口中就可以了。父子进程会通过进程间通信控制一些别的逻辑。 从目前看OS X是不支持这一个结构了,考虑在OS X上改成一个进程。

Yoo小老弟 回复于 2020年03月17日

楼主 目前我也遇到这个问题 请问用的electron+vue mac桌面端 打开的chromium 然后最小化或者关闭,想要再次调起的时候怎样调起呢 请问您这边解决了么 或者查到相关api了么 我上传个图片alt text

Yoo小老弟 回复于 2020年03月17日

alt text

登录 或者 注册