「MonoMac/AppleScriptを実行する」の版間の差分
ページの作成:「==実装例1== MonoMacにはAppleScriptをコンパイルしたり実行したりするNSAppleScriptクラスが存在しないようだ。応急処置的で...」 |
編集の要約なし |
||
| 1行目: | 1行目: | ||
[[MonoMac]]には[[AppleScript]]を[[コンパイル]]したり実行したりするNSAppleScriptクラスが存在しないようだ。 | |||
そこで応急処置的な解決策を模索してみる。 | |||
なお、[[Xamarin.Mac]]にはFoundation名前空間にNSAppleScriptクラスが用意されている。 | |||
可能であればそちらを使う方が望ましいと思われるが、両対応を考えるとこちらの方が有効かもしれない。 | |||
詳細は「[[Xamarin.Mac/AppleScriptを実行する]]」を参照。 | |||
==実装例1== | ==実装例1== | ||
[[コマンドライン]]から[[AppleScript]]を実行するosascriptコマンドを使えば一応は問題ないようだ。 | |||
定型文的に決まったAppleScriptであればBundle Resourceにテキストファイルとして用意しておいて、osascriptコマンドにファイル引数を渡すのもありかもしれない。 | |||
<source lang="csharp"> | <source lang="csharp"> | ||
public override void AwakeFromNib() | public override void AwakeFromNib() | ||
| 34行目: | 41行目: | ||
} | } | ||
</source> | </source> | ||
==関連項目== | ==関連項目== | ||
*[[Xamarin.Mac/AppleScriptを実行する]] | |||
==参考文献== | ==参考文献== | ||
2015年7月2日 (木) 05:12時点における版
MonoMacにはAppleScriptをコンパイルしたり実行したりするNSAppleScriptクラスが存在しないようだ。 そこで応急処置的な解決策を模索してみる。
なお、Xamarin.MacにはFoundation名前空間にNSAppleScriptクラスが用意されている。 可能であればそちらを使う方が望ましいと思われるが、両対応を考えるとこちらの方が有効かもしれない。 詳細は「Xamarin.Mac/AppleScriptを実行する」を参照。
実装例1
コマンドラインからAppleScriptを実行するosascriptコマンドを使えば一応は問題ないようだ。 定型文的に決まったAppleScriptであればBundle Resourceにテキストファイルとして用意しておいて、osascriptコマンドにファイル引数を渡すのもありかもしれない。
public override void AwakeFromNib()
{
base.AwakeFromNib();
// 再生ボタンを押したときの処理
playButton.Activated += (object sender, EventArgs e) => {
using (var p = new System.Diagnostics.Process())
{
// iTunesで再生する
p.StartInfo.FileName = "osascript";
p.StartInfo.Arguments = "-e 'tell application \"iTunes\" to play'";
//出力を読み取れるようにする
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = false;
//実行
p.Start();
//出力を読み取る
var results = p.StandardOutput.ReadToEnd();
Console.WriteLine(results);
//プロセス終了まで待機する
p.WaitForExit();
}
};
}