我試圖使用該代碼的全球重要事件寄存器:問題與CGEventTapCreate()調用
void function()
{
CFMachPortRef keyUpEventTap = CGEventTapCreate(kCGHIDEventTap,kCGHeadInsertEventTap,kCGEventTapOptionListenOnly,CGEventMaskBit(kCGEventKeyUp),&keyUpCallback,NULL);
CFRunLoopSourceRef keyUpRunLoopSourceRef = CFMachPortCreateRunLoopSource(NULL, keyUpEventTap, 0);
CFRelease(keyUpEventTap);
CFRunLoopAddSource(CFRunLoopGetCurrent(), keyUpRunLoopSourceRef, kCFRunLoopDefaultMode);
CFRelease(keyUpRunLoopSourceRef);
}
應用程序崩潰在執行CFMachPortCreateRunLoopSource()調用。我認爲當我創建事件點擊時,崩潰是因爲CGEventMaskBit(kCGEventKeyUp)。
但是,如果我使用CGEventTapCreate(kCGHIDEventTap,kCGHeadInsertEventTap,kCGEventTapOptionListenOnly,CGEventMaskBit(kCGEventFlagsChanged),&keyUpCallback,NULL)
創建事件點擊,應用程序工作正常。它不會崩潰。當任何修改鍵被按下時,我會得到回調。但我需要按回車鍵來刪除鍵。
任何想法?
謝謝,
Dheeraj。
你有沒有試過看的按鍵事件? – JWWalker 2010-06-01 05:13:02
是的,我也嘗試過關鍵事件。關鍵和關鍵崩潰。 – Dheeraj 2010-06-01 07:32:01