作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经开始监听全局 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
。
最佳答案
您没有发布分布式通知,也没有使用分布式通知中心。这意味着您知道通知来自当前应用程序。
同时,您自己生成通知,因此如果您确实需要了解该应用程序,只需将其添加进去即可。
最后,您嵌入的事件是全局关键事件,没有关联的应用程序。除特殊情况外,它们不是由任何应用程序生成的,而是由用户在键盘上键入生成的。
关于objective-c - 有没有办法识别 NSNotification/NSEvent 来自哪个应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13280387/
我是一名优秀的程序员,十分优秀!