Можно ли программно скрыть иконку дока

Можно ли программно скрыть значок дока по запросу. Я знаю один способ, с помощью которого определяя свойство «Приложение является агентом (UIElement)» в plist, мы делаем приложение какао в качестве пользовательского агента. Но это приводит к постоянному скрытию значка дока.

Я ищу способ, с помощью которого я могу контролировать видимость значка дока. Любая идея ?


person Unicorn    schedule 14.05.2010    source источник


Ответы (2)


К сожалению нет. Вы можете преобразовать фоновое приложение в приложение переднего плана с помощью функции TransformProcessType(), но вы не можете перейти из приложения переднего плана в фоновое приложение.

Вот как перейти от фона к переднему плану:

ProcessSerialNumber psn = { 0, kCurrentProcess }; 
OSStatus returnCode = TransformProcessType(&psn, kProcessTransformToForegroundApplication);
if( returnCode != 0) {
    NSLog(@"Could not bring the application to front. Error %d", returnCode);
}
person Rob Keniger    schedule 14.05.2010
comment
Ох... можно ли программно управлять видимостью главного меню? Если я смогу это сделать, то у меня может быть решение. ? - person Unicorn; 14.05.2010
comment
Unicorn: в Mac OS X 10.6: developer.apple.com/mac/library /technotes/KioskMode В более старых версиях Mac OS X можно использовать SetSystemUIMode с параметром kUIModeAllHidden, как описано в TN2062: developer.apple.com/mac/library/technotes/tn2002/tn2062.html, но это решение также скроет док-станцию ​​(не только плитку док-станции — *весь док*). - person Peter Hosey; 15.05.2010
comment
Да, я пробовал это, но это не то, что мне нужно. Если это техническое ограничение, то я должен найти какой-нибудь другой выход... Спасибо за вашу помощь, ребята! - person Unicorn; 18.05.2010

Это возможно. Однако он также скрывает меню.

NSApplication.shared.setActivationPolicy(.accessory)
DispatchQueue.main.async {
    NSApplication.shared.activate(ignoringOtherApps: true)
    NSApplication.shared.windows.first!.makeKeyAndOrderFront(self)
}

И назад:

NSApplication.shared.setActivationPolicy(.regular)
person Shuricksoft    schedule 14.05.2020