J'aime beaucoup la réponse de @mat-burns.
Mais comme nous exécuterions l'Applescript à partir de la ligne de commande pour exécuter le code swift de toute façon, je voulais tout faire à partir d'un seul fichier.
Ajout de l'Applescript au code 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()
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()
Une fois le code enregistré et que nous avons exécuté /bin/chmod +x ~/scripts/clickdrag.swift
pour rendre le script exécutable
Remplacez ~/scripts/clickdrag.swift
par votre chemin réel vers le fichier swift.
Nous pouvons maintenant exécuter le code à partir de la ligne de commande:
MISE À JOUR
Auparavant, vous auriez dû entrer la ligne de commande comme ceci:
~/scripts/clickdrag.swift -x 364 -y 206 -dx 1038 -dy 726
Mais si nous utilisons la méthode simple pour déterminer les limites dont vous avez besoin en ouvrant une fenêtre Finder et en la façonnant à la zone que vous voulez capturer.
Ensuite, exécutez cet Applescript:
tell application "Finder" to get bounds of window 1
Cela renverra les limites dans le volet des résultats.
-> {364, 206, 1038, 726}
Il serait beaucoup plus facile de copier et coller 364, 206, 1038, 726
dans la commande telle quelle.
La mise à jour ci-dessus vous permet de exécuter la commande comme suit.
~/scripts/clickdrag.swift 364, 206, 1038, 726
1 votes
Vous pouvez trouver ceci utile : apple.stackexchange.com/questions/63056/…
0 votes
Merci cela m'a mis sur la bonne voie... Je vais maintenant poster ma solution...