我正在使用以下代码来模拟鼠标单击事件
public class func leftMouseDown(onPoint point: CGPoint) {
guard let downEvent = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, mouseCursorPosition: point, mouseButton: .left) else {
return
}
downEvent.setIntegerValueField(CGEventField.eventSourceUserData, value: 1)
downEvent.post(tap: CGEventTapLocation.cghidEventTap)
}
public class func leftMouseUp(onPoint point: CGPoint) {
guard let upEvent = CGEvent(mouseEventSource: nil, mouseType: .leftMouseUp, mouseCursorPosition: point, mouseButton: .left) else {
return
}
upEvent.setIntegerValueField(CGEventField.eventSourceUserData, value: 1)
upEvent.post(tap: CGEventTapLocation.cghidEventTap)
}
模拟鼠标滚轮滚动事件的相似方法是什么?
答案 0 :(得分:1)
感谢Willeke从10.13开始添加了新的事件构造函数。
这是我的解决方案,但仅适用于macOS版本== 10.13
public class func scrollMouse(onPoint point: CGPoint, xLines: Int, yLines: Int) {
if #available(OSX 10.13, *) {
guard let scrollEvent = CGEvent(scrollWheelEvent2Source: nil, units: CGScrollEventUnit.line, wheelCount: 2, wheel1: Int32(yLines), wheel2: Int32(xLines), wheel3: 0) else {
return
}
scrollEvent.setIntegerValueField(CGEventField.eventSourceUserData, value: 1)
scrollEvent.post(tap: CGEventTapLocation.cghidEventTap)
} else {
// scroll event is not supported for macOS older than 10.13
}
}