Objective c 当应用程序窗口未激活时,如何拦截Cocoa中的热键

Objective c 当应用程序窗口未激活时,如何拦截Cocoa中的热键,objective-c,cocoa,x86-64,hotkeys,Objective C,Cocoa,X86 64,Hotkeys,我试图创建一个实用程序,它在执行时不会打开窗口,并且可以通过热键激活;我读到Cocoa目前没有这个函数,我应该使用一个弃用的碳函数 在Cocoa中真的没有使用全局热键的方法吗?我应该怎么做:等待Cocoa为其引入一个函数,或者使用carbon函数,直到Cocoa中没有引入类似的函数为止?使用此功能在64位中受支持(请注意,它缺少“64位中不可用”可用性说明) 相反,Snow Leopard中NSEvent的新addGlobalMonitorForEventsMatchingMask:handle

我试图创建一个实用程序,它在执行时不会打开窗口,并且可以通过热键激活;我读到Cocoa目前没有这个函数,我应该使用一个弃用的碳函数

在Cocoa中真的没有使用全局热键的方法吗?我应该怎么做:等待Cocoa为其引入一个函数,或者使用carbon函数,直到Cocoa中没有引入类似的函数为止?

使用此功能在64位中受支持(请注意,它缺少“64位中不可用”可用性说明)


相反,Snow Leopard中NSEvent的新
addGlobalMonitorForEventsMatchingMask:handler:
方法不是实现热键的最简单方法。一方面,它要求用户能够访问打开的辅助设备;此外,它要求您自己检查每个事件,与
RegisterEventThotKey
系统相比,该系统仅在用户按下您注册的特定键时调用回调函数。

查看快捷方式记录器()使用Carbon事件管理器进行全局热键的框架还允许您更改用户以更改热键(如果这是您想要的)


请看如何实现它的项目/代码:。

我试图避免对一个库使用一个函数,而这个函数可能会在任何时候被苹果宣布为不受支持。就我所见,碳似乎在不久的将来不会受到反对,即使苹果一直宣称碳只是一个允许进入Mac OS X的库,而且可以随时删除
等待Cocoa类处理热键是没有意义的,因为该类可能在5年内推出。苹果从未说过这一点。“碳”这个名字的出现是因为“所有生命都基于碳”的概念。可可是一种方便的包装,而不是任何重要东西的基础。以苹果公司的典型方式,他们已经从网站上删除了
RegisterEventHotKey
功能的文档。但是,至少有一个示例应用()仍然使用它(在中),并且它仍然记录在
CarbonEvents.h
头文件中。