30

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

4

5 回答 5

56

作者的原始代码不起作用,因为他/她正在尝试打印浮动为 %d。正确的代码是:

NSPoint mouseLoc = [NSEvent mouseLocation]; //get current mouse position
NSLog(@"Mouse location: %f %f", mouseLoc.x, mouseLoc.y);

你不需要去 Carbon 做这个。

于 2009-12-09T08:13:30.127 回答
27
CGEventRef ourEvent = CGEventCreate(NULL);
point = CGEventGetLocation(ourEvent);
CFRelease(ourEvent);
NSLog(@"Location? x= %f, y = %f", (float)point.x, (float)point.y);
于 2009-07-12T23:27:58.763 回答
13

小心将 NS 环境与 CG 环境混合。如果您使用 NS mouseLocation 方法获取鼠标位置,然后使用 CGWarpMouseCursorPosition(cgPoint) 您将不会被发送到您期望的屏幕上的点。该问题是由于 CG 使用左上角为 (0,0) 而 NS 使用左下角为 (0,0)。

于 2014-04-28T14:20:12.560 回答
6

Swift中这个问题的答案

let currentMouseLocation = NSEvent.mouseLocation()
let xPosition = currentMouseLocation.x
let yPosition = currentMouseLocation.y
于 2016-05-28T05:57:58.803 回答
0
NSLog(@"%@", NSStringFromPoint(point));

NSLog 为真;

于 2016-02-12T12:11:17.743 回答