【发布时间】:2011-02-25 03:17:38
【问题描述】:
我正在编写一个 64 位的 Cocoa 应用程序。我需要注册全球关键事件。所以我写了这段代码:
- (void)awakeFromNib
{
EventHotKeyRef gMyHotKeyRef;
EventHotKeyID gMyHotKeyID;
EventTypeSpec eventType;
eventType.eventClass=kEventClassKeyboard;
eventType.eventKind=kEventHotKeyPressed;
eventType.eventClass=kEventClassKeyboard;
eventType.eventKind=kEventHotKeyPressed;
InstallApplicationEventHandler(&MyHotKeyHandler,1,&eventType,NULL,NULL);
gMyHotKeyID.signature='htk1';
gMyHotKeyID.id=1;
RegisterEventHotKey(49, cmdKey+optionKey, gMyHotKeyID,
**GetApplicationEventTarget**(), 0, &gMyHotKeyRef);
}
但由于 64 位应用程序不支持 GetApplicationEventTarget(),所以我遇到了错误。如果我声明它,那么我不会收到任何错误,但应用程序会崩溃。
GetApplicationEventTarget()(在 Carbon 框架中定义)是否有任何等效方法可以在 64 位应用程序中使用。
或者有什么方法可以使用 cocoa 调用获取全局关键事件?
感谢任何帮助。
谢谢, 迪拉杰。
【问题讨论】:
-
您的 OS X 版本是什么?
标签: objective-c cocoa macos-carbon