如何设置鼠标位置?

时间:2012-04-21 03:42:27

标签: macos core-graphics macos-carbon

我需要在屏幕上设置鼠标的位置。在其他一些类似的问题中,建议使用CGDisplayMoveCursorToPoint(CGDirectDisplayID display, CGPoint point),但我无法弄清楚如何获取CGDirectDisplayID。请告诉我如何获取CGDirectDisplayID或其他方法来设置鼠标位置。

6 个答案:

答案 0 :(得分:4)

这个问题的真正答案是:

CGMainDisplayID()

https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/Quartz_Services_Ref/index.html#//apple_ref/c/func/CGMainDisplayID

CGDisplayMoveCursorToPoint(CGMainDisplayID(), point);

答案 1 :(得分:2)

试试CGWarpMouseCursorPosition()。它不需要显示ID。

如果您需要显示ID,可以使用[NSScreen screens]返回的数组,使用您喜欢的任何条件选择元素。在-deviceDescription对象上调用NSScreen。从返回的字典中,使用密钥-objectForKey:调用@"NSScreenNumber"

答案 2 :(得分:1)

这是一种方法:

// coordinate at (10,10) on the screen
CGPoint pt;
pt.x = 10;
pt.y = 10;

CGEventRef moveEvent = CGEventCreateMouseEvent(
    NULL,               // NULL to create a new event
    kCGEventMouseMoved, // what type of event (move)
    pt,                 // screen coordinate for the event
    kCGMouseButtonLeft  // irrelevant for a move event
);

// post the event and cleanup
CGEventPost(kCGSessionEventTap, moveEvent);
CFRelease(moveEvent);

这会将光标移动到屏幕上的点(10,10)(左上角,Apple菜单旁边)。

答案 3 :(得分:1)

这是一个Swift版本,只是为了踢:

let pt = CGPoint(x: 100, y: 10)
let moveEvent = CGEventCreateMouseEvent(nil, .MouseMoved, pt, .Left)
CGEventPost(.CGSessionEventTap, moveEvent);

答案 4 :(得分:0)

Swift 3版本的答案帮助了我:

let pt = CGPoint(x: 100, y: 10)

let moveEvent = CGEvent(mouseEventSource: nil, mouseType: .mouseMoved, 
mouseCursorPosition: pt, mouseButton: .left)

moveEvent?.post(tap: .cgSessionEventTap)

答案 5 :(得分:0)

这是在 Swift 5 中:

let pt = CGPoint(x: 100, y: 10)
        let moveEvent = CGEvent(mouseEventSource: nil, mouseType: .mouseMoved, mouseCursorPosition: pt, mouseButton: .left)
        moveEvent?.post(tap: .cgSessionEventTap);