可可:获取当前鼠标在屏幕上的位置

时间:2009-07-12 22:10:10

标签: cocoa mouse position

我需要使用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坐标或将其翻译。

5 个答案:

答案 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是真的;