繁体   English   中英

如何显示NSStatusBar项并隐藏停靠栏图标?

[英]How do you show a NSStatusBar item AND hide the dock icon?

我已经尝试将“Application is Agent”设置为1,但状态栏项目消失了。 设置为0时,状态栏项目和停靠栏图标都会显示。 如何显示状态栏项但隐藏停靠栏图标?

我在AppDelegate.swift awakeFromNib()applicationDidFinishLaunching()中尝试了以下内容:

//class scope    
let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength)

//function scope    
self.statusItem.image = NSImage(named: "myImage")
let menu = NSMenu(title: "MyApp-Menu")
let menuItem = NSMenuItem(title: "title", action: nil, keyEquivalent: "")
menu.addItem(menuItem)
self.statusItem.menu = menu

已针对Mac OS 10.14进行了更新

在AppDelegate中:

let statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.squareLength)

func applicationDidFinishLaunching(_ aNotification: Notification) {
    if let button = statusItem.button {
        button.image = NSImage(named:NSImage.Name("StatusBarButtonImage"))
        button.action = #selector(launchFromTray)
    }
    constructMenu()
}

func constructMenu() {
    let menu = NSMenu()
    menu.addItem(NSMenuItem.separator())
    menu.addItem(NSMenuItem(title: "Show", action: #selector(launchFromTray), keyEquivalent: "w"))
    menu.addItem(NSMenuItem(title: "Quit", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q"))

    statusItem.menu = menu
}

您现在应该将Application is agent (UIElement)为YES。 应该工作正常,希望这将有助于某人

要隐藏停靠图标,必须将“Application is Agent”设置为“YES”,或者将app设置为UIElement Application:

 ProcessSerialNumber psn = { 0, kCurrentProcess };
 OSStatus rt = TransformProcessType(&psn, kProcessTransformToUIElementApplication);

根据您提供的代码部分,我认为您说“状态栏项目消失”并没有真正消失,只是菜单消失了。 除非您编写错误的代码,否则状态栏不会消失,但您的代码看起来很好。

如果我认为是正确的,菜单会消失,因为该应用程序是代理应用程序。 你需要做的就是让它再次成为一个UI元素应用程序:

ProcessSerialNumber psn = { 0, kCurrentProcess };
    OSStatus returnCode = TransformProcessType(&psn, kProcessTransformToForegroundApplication);

运行代理应用程序时,无法显示菜单栏。只能在代理应用程序和菜单栏之间选择一个。

代理包括仅限背景的应用程序,无面向背景的应用程序和UI元素,但不是带有菜单栏的完整应用程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM