Nsevent.mouseevent координаты, затронутые масштабированием отображения - как последовательно щелкнуть?IOS

Программируем под IOS
Ответить
Anonymous
 Nsevent.mouseevent координаты, затронутые масштабированием отображения - как последовательно щелкнуть?

Сообщение Anonymous »

Я использую nsevent.mouseevent () , чтобы щелкнуть конкретные координаты в окне другого приложения, но когда я изменяю разрешение на отображение/масштабирование, одни и те же координаты (500, 300) нажимают разные места в окне.

Код: Выделить всё

func sendNSEventClick(at point: NSPoint, pid: pid_t, windowNumber: Int) {
guard let mouseDown = NSEvent.mouseEvent(
with: .leftMouseDown,
location: point,
modifierFlags: [],
timestamp: ProcessInfo.processInfo.systemUptime,
windowNumber: windowNumber,
context: nil,
eventNumber: 0,
clickCount: 1,
pressure: 1.0
) else { return }

mouseDown.cgEvent?.postToPid(pid)
// ... mouseUp similar
}
Простой тест, который не сбои:

Код: Выделить всё

// This should click window center, but clicks different spots at different resolutions
let centerPoint = NSPoint(x: windowFrame.width/2, y: windowFrame.height/2)
sendNSEventClick(at: centerPoint, pid: pid, windowNumber: windowNumber)
Как сделать координаты разрешения/масштабирования независимыми? Нужно ли применить координаты некоторого масштабирования к координатам, прежде чем переходить в nsevent.mouseevent () ?


Подробнее здесь: https://stackoverflow.com/questions/797 ... ick-consis
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»