【问题标题】:LSUIElement application be responsiveLSUIElement 应用程序响应式
【发布时间】:2012-09-14 18:28:06
【问题描述】:

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

【问题讨论】:

    标签: macos cocoa background


    【解决方案1】:

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

    您的应用程序可以通过设置Event Tap 来实现“热键”:

    CGEventTapCreate(kCGSessionEventTap,
                     kCGTailAppendEventTap,
                     kCGEventTapOptionDefault,
                     kCGEventKeyDown
                     myEventTapCallback,
                     NULL);
    

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

    在 GitHub 上还有一个由 Dave DeLong 编写的可能更易于使用的 Cocoa 类:DDHotKey

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      相关资源
      最近更新 更多