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

0

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

После того, как я запустил приложение, он запускает 3 подпроцесса. На мониторе активности это выглядит так: MyApp - process1 - process2 - process3

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

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

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

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

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

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

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

Теги:
select
macos
dock

2 ответа

0
Лучший ответ

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

Все это :)

0

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

Поэтому добавьте это в файл info.plist: -

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

Это описано в разделе " Запуск сервисов".

  • 0
    Проблема в том, что мое приложение должно оставаться в Dock, но только один раз.
  • 0
    Извините, тогда я не уверен, что понимаю ваш вопрос. Что вы подразумеваете под 3 подпроцессами? Я предположил, что это было 3 приложения, где одно запускает два других, и вы хотели, чтобы другие два перестали отображаться в доке.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню