【问题标题】:OSX/Cocoa : Listening for system wide mouse drag eventsOSX/Cocoa:监听系统范围的鼠标拖动事件
【发布时间】:2011-09-30 18:53:21
【问题描述】:

您好,我是 cocoa 编程的新手,想知道如何为系统范围的事件(例如鼠标拖动)创建侦听器。我已将此添加到我的应用中(我在另一篇文章中看到了):

static CGEventRef eventFunction(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon)
{
    printf("event triggered\n");
    return event;
}

但它永远不会被调用,我不确定我应该在哪里注册回调。

【问题讨论】:

    标签: objective-c macos cocoa events listener


    【解决方案1】:

    观察全局鼠标事件最简单的方法是使用NSEvent类方法addGlobalMonitorForEventsMatchingMask:handler:

    例子:

    [NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask 
                                           handler:^(NSEvent *event) {
        NSLog(@"Dragged...");
    }];
    

    请注意,这只适用于其他应用程序,要在您自己的应用程序中获取这些事件,您必须添加一个额外的本地事件处理程序。

    【讨论】:

      猜你喜欢
      • 2011-12-10
      • 2016-11-12
      • 2018-07-15
      • 2010-10-05
      • 2020-02-20
      • 2011-09-19
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多