У меня проблема с моим приложением, написанным на 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. Если я отключу значок, процесс помечается как «не отвечает», но все еще отвечает подключенным клиентам.
Пользователь может быть смущен вторым значком дока или не отвечающим процессом и думает, что что-то пошло не так.
Если вы установите флаг LSUIElement в Info.plist для соответствующего процесса, он остановит отображение значка в документе.
Так что добавьте это в файл info.plist: —
<key>LSUIElement</key>
<true/>
Это задокументировано под Услуги запуска.
Я нашел решение.
vncserver
был расположен в Contents/MacOS
каталог, но он должен быть в Contents/Resources
Это все 🙂