我需要设置在屏幕上鼠标的位置。 在其他一些类似的问题,有人建议使用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]
。 调用-deviceDescription
上NSScreen
对象。 从所返回的字典中,调用-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?