2016-10-02 10 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 
    } 
} 

私は、ターミナルを起動する方法と、それをクローズする方法を考え出したが、私はそれにコマンドを渡す方法がわかりません。私はそれを渡したい コマンドは次のとおりです。「screencapture〜/デスクトップ/ screenshot.jpg」

+1

なぜこの目的のために端末を起動したいですか?/usr/sbin/screencaptureは、NSTask(またはProcess in Swift 3)を介して直接実行することができます。 –

+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を取得します。 2行目はシェルタスクを実行します。コマンドまたはOptionキーを押しながら記号をクリックして、宣言/文書を入手します。 – vadian

+0

CMD + Shift + 4を押したときのようにすべてのモニタをキャプチャすることができます。そして、2枚の写真がそれぞれデスクトップの1つでデスクトップに保存されますか? – user6879072

関連する問題