当我使用RegisterEventHotKey(Cocoa)时,为什么复制和粘贴在finder中不起作用?

时间:2011-05-31 10:39:26

标签: objective-c cocoa macos-carbon hotkeys finder

我使用函数RegisterEventHotKey(),当我尝试注册Cmd + C或Cmd + V时,我注意到在finder中复制和粘贴不起作用。

我将参数inOptions = 0插入到函数RegisterEventHotKey()中,所以它应该是非独占的,但为什么finder似乎没有收到这个热键?

EventTypeSpec eventType;
eventType.eventClass=kEventClassKeyboard;
eventType.eventKind=kEventHotKeyPressed;
InstallApplicationEventHandler(&MyHotKeyHandler,1,&eventType,(void *)self,NULL);

EventHotKeyID gMyHotKeyID;
NSInteger keycode = 8; // 'C'

UInt32 modkey=0;
modkey+=cmdKey;
RegisterEventHotKey((int)keycode, modkey, gMyHotKeyID,
                        GetApplicationEventTarget(), 0, &hotkeyRef);


//
OSStatus MyHotKeyHandler(EventHandlerCallRef nextHandler,EventRef theEvent,
                         void *userData)
{
    NSLog(@"test hot key");
    return eventNotHandledErr;
}

这是代码。当我单击cmd + C时,它会显示日志“test hot key”,但是finder没有复制所选文件。

*我的申请是代理人。有菜单栏,并始终在后台运行。

1 个答案:

答案 0 :(得分:3)

它不起作用,因为当您安装热键处理程序时,可以替换每个应用程序中该组合键的默认功能