“addGlobalMonitorForEventsMatchingMask”返回“null”

时间:2012-03-05 13:10:40

标签: objective-c cocoa

我正在尝试监控全局事件,所以我尝试添加全局监视器。但是,我无法从此监视器获取任何信息。它会在事件中激活,但会返回NULL

    [NSEvent addGlobalMonitorForEventsMatchingMask:(NSLeftMouseDownMask) handler:^(NSEvent *incomingEvent){
NSLog(@"Window Number :%@",[[incomingEvent window] windowNumber]);
}];

此代码位于程序中的(id)init方法中。每当我单击一个窗口或导致事件时,我都会获得带有NULL的NSLOG消息作为窗口信息。 样本输出如下:

Window Number: (null)

我不知道我哪里出错了。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我面临的问题是由于

NSLog(@"Window Number :%@",[[incomingEvent window] windowNumber]);

如果您想显示所点击窗口的详细信息,请使用帖子https://stackoverflow.com/a/4704158/1249876

中所述的CGWindow.h例程

虽然从逻辑上讲,windowNumberNSWindow类的一种方法,但在这种情况下它不会返回任何输出,这有点违反直觉。