如何设置鼠标的位置?(How can I set the mouse position?)

2019-06-23 19:55发布

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

Answer 1:

真正的答案,这个问题是:

CGMainDisplayID()

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

CGDisplayMoveCursorToPoint(CGMainDisplayID(), point);


Answer 2:

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

如果想要显示ID,则可以选择一个元素,使用你喜欢的任何标准,从由返回的数组[NSScreen screens] 。 调用-deviceDescriptionNSScreen对象。 从所返回的字典中,调用-objectForKey:用钥匙@"NSScreenNumber"



Answer 3:

这里有一个办法做到这一点:

// 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)(左上角,旁边的苹果菜单)。



Answer 4:

这里有一个雨燕的版本,只是踢:

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


Answer 5:

斯威夫特3版本,帮助我的答案:

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

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

moveEvent?.post(tap: .cgSessionEventTap)


文章来源: How can I set the mouse position?