【问题标题】:How to close NSWindow and remove the application Icon from dock menu, yet如何关闭 NSWindow 并从停靠菜单中删除应用程序图标
【发布时间】:2012-06-01 01:37:38
【问题描述】:

如果您在 MacBook 上使用 DropBox,一旦我们完成注册过程,您一定已经看到了这一点。它关闭主窗口应用程序并将其从停靠项中自行删除,但应用程序正在从状态菜单运行。


视觉:


到目前为止我做了什么:

  • 我的应用程序使用 show NSWindow 完美运行
  • 当我从前端应用程序窗口登录时,我可以创建一个带有弹出框的状态菜单图标
  • 在这一步中,我想删除 NSWindow 和 Dock 图标,但应用程序应该可以从状态菜单访问。

如何做到这一点?

仅供参考:我不期待任何代码,只是理解或快速提示。我会弄清楚其余的:)


我指的资源,

稍后我将为launchd 配置我的应用程序。所以在系统启动时它可以启动并在状态菜单中显示它自己。现在我正在寻找一个很好的资源(当然它很好,因为它的 Apple Doc)但是由于我是一个天真的程序员,有没有人有一个很好的示例链接?其中显示了如何在启动时添加应用程序?

编辑:

我会关注这个tutorial添加到启动中,以后用户可以根据需要更改他们的偏好,他们可以选择打开我的应用程序或在启动时关闭

【问题讨论】:

  • 您不应该使用launchd,您应该将您的应用添加为登录项...
  • 该教程有效,但已过时。我相信有更好的方法可以做到这一点,但我不记得如何了。 :)
  • 好的,找到了最新的方式...它适用于 10.6.6 或更高版本:Link
  • @Teak,这真的很有帮助,我无法在这里多次投票,所以我检查了你的其他答案并投票赞成大声笑。再次感谢!
  • 没问题,我很高兴我记得...

标签: objective-c macos cocoa statusbar


【解决方案1】:

要仅将您的应用作为状态菜单运行,请将以下键之一添加到您的 info.plist 文件中:

Application is agent (UIElement)

或:

Application is background only

至于在两者之间切换,我不确定最好的方法,但我建议将设置过程设为自己的应用程序。 (带有图标和窗口的应用程序)您可以将应用程序包含在菜单项应用程序中,并在用户启动程序时自动启动它...

【讨论】:

  • 是的,GUI 应用程序应该不同于状态项。您可以将进程从仅后台或 UI 元素转换为完整的 GUI 应用程序,但不能在另一个方向上。
  • 要在前景/背景之间切换,您可以在这里找到我的有用提示stackoverflow.com/questions/12948539/…
【解决方案2】:

正如柚木所说,您希望 info.plist 中的“应用程序是代理 (UIElement)”键。这个键意味着你不会有一个停靠图标......这就是你想要的。但是,无需使用“Application is background only”键。此键可防止您在屏幕上放置任何不必要的窗口。所以我会把这把钥匙放在外面。

通常设置您的应用程序,以便在启动时不会自动显示窗口。在启动时进行某种检查以查看是否需要配置。如果是,则使您的配置窗口可见。您甚至可以在状态菜单中有一个“配置...”菜单项,这样您的用户就可以在需要时随时弹出打开配置窗口。真的很简单,只是不要使用“Application is background only”这个info.plist键。

顺便说一句,要让窗户出现在前面有点困难。诀窍是让您的应用程序像这样排在最前面...

[NSApp activateIgnoringOtherApps:YES];
[someWindow makeKeyAndOrderFront:nil];

【讨论】:

    【解决方案3】:

    通常使用两个单独的应用程序解决 Dropbox 示例中提到的情况,一个用于菜单,一个用于另一个 ui 部分(具有提到的停靠图标 f.e.),并且两个进程通过 f.e. 合作。 ipc。

    在一个应用中做同样的事情有点棘手,你可以在这里找到我的详细信息

    Cocoa - go to foreground/background programmatically

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      相关资源
      最近更新 更多