2010-01-25 89 views
13

我想为我的应用程序创建一个全局快捷方式。我已经使用addGlobalMonitorForEventsMatchingMask方法做了这个很酷的新方法。问题是,我的事件没有被“消耗”:我的快捷方式包括空格键,所以无论何时使用快捷方式,当我在Finder中时都会弹出Quicklook。可可全球快捷方式?

我该如何防止这种情况发生?我知道这是可能的,因为许多应用程序,例如Bowtie iTunes控制器应用程序都可以。

回答

10

addGlobalMonitorForEventsMatchingMask:由于种种原因不适合替代现有的Carbon Hotkey API;这是非常低效的,并从文档:

...你只能观察事件;您无法修改或以其他方式阻止将事件传递到其原始目标应用程序。

重点相关的事件可能只有在可访问启用或监控,如果您的应用程序是值得信赖的无障碍访问

热键API仍然是实现的唯一途径OS X中的全局快捷方式。但与许多Carbon API不同,Hotkey API可用于64位应用程序。

+0

谢谢!正是我在找的! – Alice 2010-01-25 20:21:02

7

使用hotkey API,这是为此目的。

+0

否可可方式这样做? – Alice 2010-01-25 19:59:42

+0

据我所知,这是唯一的全球热键API。如果您不喜欢查看函数调用或其他东西,请随意编写一个包装HIToolbox调用的Objective-C方法。 – Chuck 2010-01-25 20:06:34

+0

是的,我会这样做,然后... – Alice 2010-01-25 20:15:48