Для поля с приложением для агента (UIElement) установлено значение ДА? - PullRequest
7 голосов
/ 26 марта 2011

Я пытаюсь создать приложение, которое должно отображаться только в строке состояния и не иметь окна, пока вы не нажмете пункты меню NSStatusItem.Так что у меня есть один, который должен открыть "около"

[[NSApplication sharedApplication] orderFrontStandardAboutPanel:self];

Но ничего не показывает, если у меня приложение является агентом, установленным на ДА.Если я изменяю его на НЕТ, он работает, но я получаю окно приложения и все пункты меню, которые я не хочу видеть.

Любые идеи?

С уважением

Ответы [ 3 ]

7 голосов
/ 27 февраля 2012

Запустил новое приложение несколько дней назад, и я понял это.

[NSApp activateIgnoringOtherApps:YES]

Делает трюк!

0 голосов
/ 08 июля 2019

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

Когда приложение завершит запуск, вы можете показывать главное окно или нет в соответствии с политикой приложения какниже:

    switch AppDefaults.shared.applicationRunMode {
    case .menuAndDock:
        _ = ApplicationMode.toggleDock(show: true)
        MainWindowController.shared.window?.makeKeyAndOrderFront(nil)
    case .menuOnly:
        _ = ApplicationMode.toggleDock(show: false)
        _ = MainWindowController.shared.window
    default:
        MainWindowController.shared.window?.makeKeyAndOrderFront(nil)
    }

, что на самом деле toggleDock делает, чтобы изменить способ отображения вашего приложения или нет.

// Get transform state.
let transformState = show ?
            ProcessApplicationTransformState(kProcessTransformToForegroundApplication)
            : ProcessApplicationTransformState(kProcessTransformToUIElementApplication)

// Show / hide dock icon.
var psn = ProcessSerialNumber(highLongOfPSN: 0, lowLongOfPSN: UInt32(kCurrentProcess))

let transformStatus: OSStatus = TransformProcessType(&psn, transformState)
return transformStatus == 0

, а UIElement в info.plist только делает ваше приложение Cocoaимеет возможность не показывать пользовательский интерфейс.

0 голосов
/ 08 апреля 2011
...