मुझे @ मैट-बर्न का जवाब बहुत पसंद है।
लेकिन चूंकि हम स्विफ्ट कोड को निष्पादित करने के लिए कमांड लाइन से एप्सलिप्ट चला रहे हैं, वैसे भी मैं यह सब एक ही फाइल से करना चाहता था।
स्विफ्ट कोड में एप्सस्क्रिप्ट को जोड़ना:
#!/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()
एक बार कोड सहेजा गया है और हम /bin/chmod +x ~/scripts/clickdrag.swift
स्क्रिप्ट को निष्पादन योग्य बनाने के लिए चले हैं
~/scripts/clickdrag.swift
स्विफ्ट फ़ाइल के लिए आप वास्तविक पथ में बदलें ।
अब हम कमांड लाइन से कोड चला सकते हैं:
अपडेट करें
इससे पहले कि आप कमांड लाइन में प्रवेश करना चाहते थे जैसे:
~/scripts/clickdrag.swift -x 364 -y 206 -dx 1038 -dy 726
लेकिन अगर हम खोजक विंडो खोलकर और उस क्षेत्र को आकार देना चाहते हैं, जिस पर आप कब्जा करना चाहते हैं, तो आप किसी भी सीमा पर काम करने के सरल तरीके का उपयोग करते हैं।
फिर इस एप्स्क्रिप्ट को चलाएं:
tell application "Finder" to get bounds of window 1
यह परिणाम फलक में सीमाएँ लौटाएगा।
-> {364, 206, 1038, 726}
364, 206, 1038, 726
जैसा है वैसे ही कमांड में कॉपी और पेस्ट करना बहुत आसान होगा ।
ऊपर दिया गया अपडेट आपको इस तरह कमांड चलाने की अनुमति देता है।
~/scripts/clickdrag.swift 364, 206, 1038, 726