LSUIElement应用程序响应迅速

时间:2011-04-28 22:17:22

标签: macos cocoa background

我有一个应用程序,我将LSUIElement键设置为1,以便它在后台运行,并且不会在Dock中显示图标。 我的意思是使应用程序响应击键或鼠标事件。实际上,主窗口仅在应用程序启动时出现。在主窗口可见的情况下,击键被正确处理,但是如果我关闭它就无法再次显示它(因此忽略击键)。我希望我的应用程序在推送特定组合键时能够响应(就像Scribblet为那些知道它的人做的那样)。 谁能告诉我在哪里可以找到有关如何做到这一点的信息?

1 个答案:

答案 0 :(得分:3)

状态栏应用程序仅处于活动状态,因此您的应用程序只能在窗口或菜单已打开时接收事件。

您的应用可以通过设置Event Tap

来实现“热键”
CGEventTapCreate(kCGSessionEventTap,
                 kCGTailAppendEventTap,
                 kCGEventTapOptionDefault,
                 kCGEventKeyDown
                 myEventTapCallback,
                 NULL);

这将允许您的应用程序在将keyDown事件路由到其他应用程序之前检查它们。有关回调函数的外观和行为方式,请参阅Callbacks

Dave DeLong在GitHub上提供了一个可能更容易使用的Cocoa类:DDHotKey