2

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

4

6 回答 6

7

这个问题的真正答案是:

CGMainDisplayID()

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

CGDisplayMoveCursorToPoint(CGMainDisplayID(), point);
于 2015-01-26T13:26:47.457 回答
3

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

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

于 2012-04-21T11:51:42.840 回答
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 菜单旁边)。

于 2012-04-21T03:49:06.063 回答
1

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

let pt = CGPoint(x: 100, y: 10)
let moveEvent = CGEventCreateMouseEvent(nil, .MouseMoved, pt, .Left)
CGEventPost(.CGSessionEventTap, moveEvent);
于 2016-09-07T03:37:27.523 回答
1

对我有帮助的答案的 Swift 3 版本:

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

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

moveEvent?.post(tap: .cgSessionEventTap)
于 2017-03-20T09:12:24.550 回答
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);
于 2021-06-13T03:37:25.307 回答