3

ホットキーによる機能の 1 つをサポートするデスクトップ アプリケーションを開発しています。これを機能させるために Event Tap を使用しています。

ただし、(ランダムに) コールバックが呼び出されないことがあります。ホット キーが機能しないため、この機能が機能していないようです。

誰かがここで問題を特定するのを手伝ってくれませんか。

以下はコード スニペットです。

-( void )startEventTapinThread //Called in a separate thread.
{
    NSAutoreleasePool *pool =[ [ NSAutoreleasePool alloc] init];

    CFRunLoopRef runloop =(CFRunLoopRef)CFRunLoopGetCurrent();
    CGEventMask interestedEvents = CGEventMaskBit(kCGEventFlagsChanged)|CGEventMaskBit(kCGEventKeyDown);
    CFMachPortRef eventTap = CGEventTapCreate(kCGSessionEventTap, kCGHeadInsertEventTap, 0, interestedEvents, myCGEventCallback, self); //self is the object pointer our method
    CFRunLoopSourceRef source = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0);
    CFRunLoopAddSource((CFRunLoopRef)runloop , source, kCFRunLoopCommonModes);
    CFRunLoopRun();
    [ pool release];
}

CGEventRef myCGEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon)
{
    CGEventType eventType = CGEventGetType(event);
    //execute the code related to feature
}
4

2 に答える 2