Инструмент командной строки Swift для щелчков мышью не будет мульти-клик в Finder - PullRequest
0 голосов
/ 03 июня 2019

Я использую приведенный ниже код в приложении командной строки для выполнения щелчков мышью. Я использую сценарий оболочки для выполнения кода и команду диктовки для его запуска. Этот код будет работать практически во всех программах, кроме Finder, и я не знаю почему. Одиночные щелчки мышью работают нормально, но не двойные или тройные. Я не знаю, в чем может быть проблема.

// Get location
var ml = NSEvent.mouseLocation
ml.y = NSHeight(NSScreen.screens[0].frame) - ml.y
let location = CGPoint(x: ml.x, y: ml.y)


// Clicks
let e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, mouseCursorPosition: location, mouseButton: .left)!
e.setIntegerValueField(.mouseEventClickState, value: 2) // double click
e.post(tap: .cghidEventTap)

CGEvent(mouseEventSource: nil, mouseType: .leftMouseUp, mouseCursorPosition: location, mouseButton: .left)!.post(tap: .cghidEventTap)

1 Ответ

1 голос
/ 04 июня 2019

Вот, пожалуйста,

/// Clicks left mouse button twice
static func doubleClick() {

    var e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, mouseCursorPosition: Mouse.location, mouseButton: .left)!
    e.post(tap: .cghidEventTap)
    e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseUp, mouseCursorPosition: Mouse.location, mouseButton: .left)!
    e.post(tap: .cghidEventTap)

    e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, mouseCursorPosition: Mouse.location, mouseButton: .left)!
    e.setIntegerValueField(.mouseEventClickState, value: 2)
    e.post(tap: .cghidEventTap)

    e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseUp, mouseCursorPosition: Mouse.location, mouseButton: .left)!
    e.setIntegerValueField(.mouseEventClickState, value: 2)
    e.post(tap: .cghidEventTap)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...