9

ステータスバーにのみ表示され、NSStatusItemメニューオプションを押すまでウィンドウが表示されないアプリケーションを作成しようとしています。だから私は「約」を開く必要があるものを持っています

[[NSApplication sharedApplication] orderFrontStandardAboutPanel:self];

しかし、アプリケーションがエージェントであるかどうかをYESに設定しても何も表示されません。NOに変更すると機能しますが、アプリケーションウィンドウと表示したくないすべてのメニューオプションが表示されます。

何か案は?

敬具

4

2 に答える 2

8

数日前に新しいアプリケーションを開始し、私はそれを理解しました。

[NSApp activateIgnoringOtherApps:YES]

トリックを行います!

于 2012-02-27T15:19:12.013 に答える
2

最も柔軟な方法は、ストーリーボードではなく、メインウィンドウのコントロールを自分で行うことだと思います。

アプリケーションの起動が完了したら、以下のようにアプリケーションポリシーに従ってメインウィンドウを表示するかどうかを指定できます。

 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アプリケーションがUIを非表示にする機能を有効にします。

于 2019-07-08T04:11:59.813 に答える