我需要使用Xcode在Mac上的屏幕上显示鼠标位置。我有一些代码应该这样做,但我总是将x和y返回为0:
void queryPointer()
{
NSPoint mouseLoc;
mouseLoc = [NSEvent mouseLocation]; //get current mouse position
NSLog(@"Mouse location:");
NSLog(@"x = %d", mouseLoc.x);
NSLog(@"y = %d", mouseLoc.y);
}
我做错了什么?你如何获得屏幕上的当前位置? 此外,最终该位置(保存在NSPoint中)需要复制到CGPoint中以与其他函数一起使用,因此我需要将其作为x,y坐标或将其翻译。
答案 0 :(得分:57)
作者的原始代码不起作用,因为他/她试图以%d打印浮点数。正确的代码是:
NSPoint mouseLoc = [NSEvent mouseLocation]; //get current mouse position
NSLog(@"Mouse location: %f %f", mouseLoc.x, mouseLoc.y);
你不需要去Carbon这样做。
答案 1 :(得分:24)
CGEventRef ourEvent = CGEventCreate(NULL);
point = CGEventGetLocation(ourEvent);
CFRelease(ourEvent);
NSLog(@"Location? x= %f, y = %f", (float)point.x, (float)point.y);
答案 2 :(得分:12)
注意将NS环境与CG环境混合。如果使用NS mouseLocation方法获取鼠标位置,则使用CGWarpMouseCursorPosition(cgPoint),您将不会被发送到您期望的屏幕上的点。问题的结果是CG使用左上角为(0,0),而NS使用左下角为(0,0)。
答案 3 :(得分:5)
Swift
中对此问题的回答let currentMouseLocation = NSEvent.mouseLocation()
let xPosition = currentMouseLocation.x
let yPosition = currentMouseLocation.y
答案 4 :(得分:0)
NSLog(@"%@", NSStringFromPoint(point));
NSLog是真的;