繁体   English   中英

Dock Icon两次相同实例和Non-Gui进程错误地标记为“不响应”

[英]Dock Icon twice of same instance and Non-Gui process wrongly tagged “not responding”

我用C ++编写的应用程序有问题。

启动我的应用程序后,它将运行3个子进程。 在活动监视器中,其外观如下:MyApp-process1-process2-process3

process1是vncserver。 如果客户端连接,则“ process1”现在称为“ MyApp”,并且第二个图标将出现在Dock中。 我搜索出该图标在调用函数“ select(..)”之后出现。 为什么会这样呢?

如果我在process1启动时调用此文件(在外部.mm文件中)

[NSApplication sharedApplication];
[NSApp setActivationPolicy:NSApplicationActivationPolicyProhibited];

第二个图标显示时间很短,但立即消失。 这解决了我的问题。 但是现在我的“ process1”(现在称为“ MyApp”)在活动监视器中被标记为“未响应”。 该过程将运行并响应客户端。 OSX现在认为我的子进程是一个GUI进程,并将其标记为“不响应”。 我该如何预防?

编辑:

进程“ MyApp”启动3个进程,一个vncserver,一个ftp客户端和一个ssh客户端。 ftp和ssh客户端工作正常。 但是vncserver更改了他的进程名称,并显示了第二个Dock图标。 如果我禁用了该图标,则该过程将被标记为“无响应”,但仍会响应所连接的客户端。

用户可能对第二个停靠图标或未响应的过程感到困惑,并认为出了点问题。

如果在Info.plist中为相关进程设置了LSUIElement标志,它将停止图标出现在文档中。

因此,将其添加到info.plist文件中:-

<key>LSUIElement</key>
<true/>

这在Launch Services下记录。

我找到了解决方案。 vncserver位于Contents/MacOS目录中,但必须位于Contents/Resources

就这样 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM