rad*_*dex 18 macos cocoa core-foundation
我怎样才能进入Mac OS X"全局"鼠标位置 - 我的意思是我怎么能在cocoa/cf /中查找光标位置,即使它在窗外,即使我的窗口处于非活动状态?
我知道它在某种程度上是可能的(即使没有管理员权限),因为我在Java中看到过类似的东西 - 但我想在ObjC中编写它
抱歉我的英语 - 我希望你明白我的意思;)
Mat*_* S. 32
NSPoint mouseLoc;
mouseLoc = [NSEvent mouseLocation]; //get current mouse position
NSLog(@"Mouse location: %f %f", mouseLoc.x, mouseLoc.y);
Run Code Online (Sandbox Code Playgroud)
如果您希望它连续获取坐标,请确保您有NSTimer或类似的东西
Dav*_*ong 29
Matt S.是正确的,如果你可以使用NSEventAPI来获取鼠标位置.但是,您不必轮询以便连续获取坐标.你可以用一个CGEventTap代替:
- (void) startEventTap {
//eventTap is an ivar on this class of type CFMachPortRef
eventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionListenOnly, kCGEventMaskForAllEvents, myCGEventCallback, NULL);
CGEventTapEnable(eventTap, true);
}
CGEventRef myCGEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) {
if (type == kCGEventMouseMoved) {
NSLog(@"%@", NSStringFromPoint([NSEvent mouseLocation]));
}
return event;
}
Run Code Online (Sandbox Code Playgroud)
这样,myCGEventCallback每次鼠标移动时,您的功能都会触发(无论您的应用程序是否位于最前端),而无需轮询信息.不要忘记CGEventTapEnable(eventTap, false),CFRelease(eventTap)当你完成时.
小智 6
如果你不在可可土地并且事件发生不适合这种情况,
CGEventRef event = CGEventCreate(nil);
CGPoint loc = CGEventGetLocation(event);
CFRelease(event);
Run Code Online (Sandbox Code Playgroud)
作品.
| 归档时间: |
|
| 查看次数: |
12440 次 |
| 最近记录: |