我需要在屏幕上设置鼠标的位置。在其他一些类似的问题中,建议使用CGDisplayMoveCursorToPoint(CGDirectDisplayID display, CGPoint point)
,但我无法弄清楚如何获取CGDirectDisplayID
。请告诉我如何获取CGDirectDisplayID
或其他方法来设置鼠标位置。
答案 0 :(得分:4)
这个问题的真正答案是:
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);