我怎样才能进入Mac OS X"全局"鼠标位置 - 我的意思是我怎么能在cocoa/cf /中查找光标位置,即使它在窗外,即使我的窗口处于非活动状态?
我知道它在某种程度上是可能的(即使没有管理员权限),因为我在Java中看到过类似的东西 - 但我想在ObjC中编写它
抱歉我的英语 - 我希望你明白我的意思;)
我需要帮助才能找到,在任何应用程序上按CMD + CTRL + D时,Dictionary应用程序如何显示以下弹出对话框中的所选文本.我想为我的cocoa应用程序实现相同类型的功能,我的应用程序将在后台运行,并在所选文本的某些热键按下时显示建议.

我已经实现了热键捕获,我只需要有代码来获取屏幕上所选文本的矩形区域,所以我可以像字典应用程序一样显示对话框.
谢谢
我无法获得支持辅助的应用程序(开发案例中的XCode)来捕获全局keyDown事件.我已经看到了很多代码示例,如下所示,但这对我来说不适用于10.9.4.
#import <AppKit/AppKit.h>
#import <Foundation/Foundation.h>
// 10.9+ only, see this url for compatibility:
// http://stackoverflow.com/questions/17693408/enable-access-for-assistive-devices-programmatically-on-10-9
BOOL checkAccessibility()
{
NSDictionary* opts = @{(__bridge id)kAXTrustedCheckOptionPrompt: @YES};
return AXIsProcessTrustedWithOptions((__bridge CFDictionaryRef)opts);
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
if (checkAccessibility()) {
NSLog(@"Accessibility Enabled");
}
else {
NSLog(@"Accessibility Disabled");
}
NSLog(@"registering keydown mask");
[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask
handler:^(NSEvent *event){
NSLog(@"keydown: %@", event.characters);
}];
NSLog(@"entering run loop.");
[[NSRunLoop currentRunLoop] run];
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
收到的输出是:
2014-08-25 17:26:36.054 test[64725:303] Accessibility Enabled
2014-08-25 17:26:36.055 test[64725:303] registering …Run Code Online (Sandbox Code Playgroud)