Значок Dock дважды одного и того же экземпляра и процесс, не относящийся к графическому интерфейсу, ошибочно помечен как «не отвечает».

У меня проблема с моим приложением, написанным на C ++.

После того, как я запустил свое приложение, оно запустило 3 подпроцесса. В мониторе активности это выглядит так:
MyApp
— процесс1
— процесс2
— процесс3

process1 является vncserver. Если клиент подключается, «process1» теперь называется «MyApp», и в Dock появляется второй значок.
Я выяснил, что значок появляется после вызова функции «выбрать (..)».
Почему это случилось?

Если я вызываю это при запуске process1 (во внешнем файле .mm)

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

второй значок появляется на очень короткое время, но сразу исчезает. Это решает мою проблему. Но теперь мой «process1» (теперь называется «MyApp») помечен как «не отвечающий» в мониторе активности. Процесс запускается и отвечает клиенту. OSX теперь думает, что мой подпроцесс — это процесс с графическим интерфейсом и пометил его как «не отвечающий».
Как я могу предотвратить это?

РЕДАКТИРОВАТЬ:

Процесс «MyApp» запускает 3 процесса, vncserver, FTP-клиент и SSH-клиент. Клиент ftp и ssh работают нормально. Но vncserver меняет имя своего процесса и показывает второй значок Dock. Если я отключу значок, процесс помечается как «не отвечает», но все еще отвечает подключенным клиентам.

Пользователь может быть смущен вторым значком дока или не отвечающим процессом и думает, что что-то пошло не так.

0

Решение

Если вы установите флаг LSUIElement в Info.plist для соответствующего процесса, он остановит отображение значка в документе.

Так что добавьте это в файл info.plist: —

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

Это задокументировано под Услуги запуска.

0

Другие решения

Я нашел решение.
vncserver был расположен в Contents/MacOS каталог, но он должен быть в Contents/Resources

Это все 🙂

0

По вопросам рекламы [email protected]