Mi piacciono molto le @ mat-burns.
Ma dal momento che dovremmo eseguire Applescript dalla riga di comando per eseguire comunque il codice swift, ho voluto eseguire tutto da un singolo file.
Aggiunta di Applescript al codice swift:
#!/usr/bin/env xcrun swift
import Foundation
let kDelayUSec : useconds_t = 500_000
func DragMouse(p0: CGPoint, p1: CGPoint) {
let mouseDown = CGEventCreateMouseEvent(nil, CGEventType(kCGEventLeftMouseDown), p0, CGMouseButton(kCGMouseButtonLeft)).takeUnretainedValue()
let mouseDrag = CGEventCreateMouseEvent(nil, CGEventType(kCGEventLeftMouseDragged), p1, CGMouseButton(kCGMouseButtonLeft)).takeUnretainedValue()
let mouseUp = CGEventCreateMouseEvent(nil, CGEventType(kCGEventLeftMouseUp), p1, CGMouseButton(kCGMouseButtonLeft)).takeUnretainedValue()
CGEventPost(CGEventTapLocation(kCGHIDEventTap), mouseDown)
usleep(kDelayUSec)
CGEventPost(CGEventTapLocation(kCGHIDEventTap), mouseDrag)
usleep(kDelayUSec)
CGEventPost(CGEventTapLocation(kCGHIDEventTap), mouseUp)
}
func ascript(){
var scriptToPerform: NSAppleScript?
let asCommand = "tell application \"QuickTime Player\" \n activate \n new screen recording \n delay 1 \n tell application \"System Events\" to key code 49 \n delay 1\n end tell"
scriptToPerform = NSAppleScript(source:asCommand)
var errorInfo = AutoreleasingUnsafeMutablePointer<NSDictionary?>()
if let script = scriptToPerform {
script.executeAndReturnError(errorInfo)
}
}
func main() {
let p0 = CGPointMake( CGFloat(atoi( C_ARGV[1])), CGFloat(atoi( C_ARGV[2])))
let p1 = CGPointMake( CGFloat(atoi( C_ARGV[3])), CGFloat(atoi( C_ARGV[4])))
DragMouse(p0, p1)
}
ascript()
main()
Una volta che il codice è stato salvato e abbiamo eseguito /bin/chmod +x ~/scripts/clickdrag.swift
per rendere eseguibile lo script
Modifica ~/scripts/clickdrag.swift
nel percorso effettivo del file swift.
Ora possiamo eseguire il codice dalla riga di comando:
UPDATE
Prima avresti dovuto inserire la riga di comando in questo modo:
~/scripts/clickdrag.swift -x 364 -y 206 -dx 1038 -dy 726
Ma se usiamo il modo semplice di elaborare i limiti necessari aprendo una finestra del Finder e plasmandola sull'area che desideri acquisire.
Quindi esegui questo file di applicazione:
tell application "Finder" to get bounds of window 1
Ciò restituirà i limiti nel riquadro dei risultati.
- > {364, 206, 1038, 726}
Sarebbe molto più facile copiare e incollare 364, 206, 1038, 726
nel comando così com'è.
L'aggiornamento sopra ti consente di eseguire il comando in questo modo.
~/scripts/clickdrag.swift 364, 206, 1038, 726