2016-10-02 30 views
0

所以到目前爲止我的代碼看起來是這樣的:如何啓動終端並以編程方式傳遞命令? | Swift3,MACOS

import Foundation 
import AppKit 

print("Starting") 
let base = NSWorkspace() 

print("Launching Terminal") 
base.launchApplication("Terminal") //launches terminal 

print("Terminating terminal") 
let apps = base.runningApplications 
for app in apps { 

    if app.localizedName == "Terminal" { 
     print(app.localizedName) 

     app.terminate() //Terminate 
     break 
    } 
} 

我已經知道如何開始進行終端再怎麼關閉它,但我不知道如何傳遞命令。 我想通過它的命令是:「抓屏〜/桌面/ screenshot.jpg」

+1

爲什麼要爲此目的啓動一個終端?應該可以通過NSTask(或Swift 3中的Process)直接執行/ usr/sbin/screencapture。 –

+0

我教過那個,但是屏幕截圖保存在哪裏?什麼是文件名和文件格式? – user6879072

+0

在終端中輸入「man screencapture」,你會看到所有的命令行選項,例如'/ usr/bin/screencapture -t pdf destinationFile'。 –

回答

0

正如馬丁認爲這斯威夫特3

let fileURL = try! FileManager.default.url(for: .desktopDirectory, in: .userDomainMask, appropriateFor: nil, create: false) 
Process.launchedProcess(launchPath: "/usr/sbin/screencapture", arguments: [fileURL.appendingPathComponent("screenshot.jpg").path]) 

執行screencapture ~/Desktop/screenshot.jpg得到的URL桌面文件夾的方式僅適用於非沙盒應用程序。

+0

這個作品,謝謝!你介意給我一些關於代碼的解釋或者指出我的正確文檔。 – user6879072

+0

第一行檢索用戶域的桌面的URL。第二行執行一個shell任務。 Command-或Option-點擊符號以獲取聲明/文檔。 – vadian

+0

是否有可能捕獲所有的監視器,如果我按下了CMD + Shift + 4並且兩個圖片將被保存到桌面上,並且每個桌面都有一個桌面? – user6879072

相關問題