![](/img/trans.png)
[英]Getting file icons (QFileIconProvider::icon) in non-gui thread
[英]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.