gpt4 book ai didi

cocoa - 如何检测任务控制或 Command-Tab 切换器取代了 OS X 中的程序?

转载 作者:行者123 更新时间:2023-12-03 16:02:07 24 4
gpt4 key购买 nike

我正在尝试在程序中使用 CGAssociateMouseAndMouseCursorPosition(NO) 。当您的应用程序“在前台”时,这会断开鼠标与屏幕光标的连接。不幸的是,当任务控制或应用程序切换器或谁知道出现其他情况时,它也会断开连接。

到目前为止我知道:

  • 该应用程序仍处于事件状态。
  • 窗口仍然是关键。
  • 出现这些情况时,不会向默认通知中心发送任何内容。
  • 应用程序停止接收鼠标移动事件,但 NSEvent addGlobalMonitorForEventsMatchingMask:handler: 也没有接收它们,这至少可以说很奇怪。它应该接收未传递到我的应用程序的任何事件。 (我计划检测丢失的事件,以了解何时再次关联鼠标。

那么,有没有办法检测我的应用程序何时不再受控制,特别是因为任务控制或交换机已接管?他们确实希望鼠标能够正常工作,而我需要为他们恢复这种关联。

最佳答案

我和您一样对全局事件监视器没有看到事件感到惊讶。在类似的情况下,我使用了 Quartz Event Tap出于类似的目的。 Cocoa 全局事件监视器与事件点击非常相似,所以我认为它会起作用。

我点击了 kCGAnnotatedSessionEventTap 并将 CGEventGetIntegerValueField(event, kCGEventTargetUnixProcessID) 的结果与 getpid() 进行比较,以确定事件发生的时间正在前往另一个应用程序(例如 Mission Control 或 Exposé)。 (当我的应用程序退出事件状态时,我会禁用该选项卡,因此当出现这种覆盖 UI 时,它应该只接收发往另一个应用程序的事件。)

顺便说一句,您提到监视默认通知中心,但是,如果有有关任务控制等的通知,则更有可能到达分布式通知中心(NSDistributedNotificationCenter)。因此,值得检查一下。

关于cocoa - 如何检测任务控制或 Command-Tab 切换器取代了 OS X 中的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com