有没有办法识别NSNotification / NSEvent来自哪个应用程序?



我已经开始收听全球keyDown事件。有没有办法从哪个应用程序中获取该事件的信息?

处理程序接收NSNotification实例,NSEvent是其中的一部分。我可以以某种方式从这些对象中提取该信息吗?

听力片段:

[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *event){
NSLog(@"global keyDown %@", event);
[[NSNotificationCenter defaultCenter] postNotificationName:kKeyPressed
object:event];
}];

观察者:

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyEventHandler:)
name:kKeyPressed
object:nil];

更新

全局键关闭不会从任何特定应用程序发送。我实际需要的是检查事件处理程序中当前处于活动状态的应用程序:

[[NSWorkspace sharedWorkspace] activeApplication]

这将返回NSDictionary我需要的信息。

您没有发布分布式通知,也没有使用分布式通知中心。这意味着您知道通知来自当前应用程序。

同时,您自己生成通知,因此,如果您确实需要了解该应用程序,则可以将其添加进来。

最后,要嵌入的事件是全局键事件,它们没有关联的应用程序。除特殊情况外,它们不是由任何应用程序生成的,而是由用户在键盘上键入生成的。

相关内容

  • 没有找到相关文章

最新更新