【问题标题】:Is it possible to hide the dock icon programmatically是否可以以编程方式隐藏停靠图标
【发布时间】:2011-02-19 10:48:29
【问题描述】:

是否可以根据需要以编程方式隐藏停靠图标。我知道在 plist 中定义属性“应用程序是代理(UIElement)”的一种方式,我们将可可应用程序作为用户代理。但这会导致永久隐藏停靠图标。

我正在寻找一种可以控制停靠图标可见性的方法。任何想法 ?

【问题讨论】:

    标签: cocoa macos user-agent nib


    【解决方案1】:

    很遗憾没有。您可以使用 TransformProcessType() 函数将纯后台应用转换为前台应用,但不能从前台应用转换为后台应用。

    以下是从背景转到前景的方法:

    ProcessSerialNumber psn = { 0, kCurrentProcess }; 
    OSStatus returnCode = TransformProcessType(&psn, kProcessTransformToForegroundApplication);
    if( returnCode != 0) {
        NSLog(@"Could not bring the application to front. Error %d", returnCode);
    }
    

    【讨论】:

    • 哦.. 是否可以通过编程方式控制主菜单的可见性?如果我能做到这一点,那么我可能会有解决方案。 ?
    • Unicorn:它在 Mac OS X 10.6 上:developer.apple.com/mac/library/technotes/KioskMode 在旧版本的 Mac OS X 上,您可以使用 SetSystemUIModekUIModeAllHidden 选项,如 TN2062 中所述:developer.apple.com/mac/library/technotes/tn2002/tn2062.html但该解决方案也会隐藏 Dock(不仅仅是您的 Dock 磁贴——*整个 Dock*)。
    • 是的,我试过了,但这不是我需要的。如果这是技术限制,那么我会想办法解决...谢谢你们的帮助!
    【解决方案2】:

    这是可能的。但是,它也会隐藏菜单。

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

    然后返回:

    NSApplication.shared.setActivationPolicy(.regular)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 2012-01-10
      • 2023-04-01
      • 2013-10-07
      • 1970-01-01
      • 2019-01-24
      相关资源
      最近更新 更多