Visual Studio for Mac Preview 17.3 の MAUIプロジェクトで Apple Scriptを実行する方法です。
新しいプロジェクトで、 .NET MAUI アプリプロジェクトを 作成後
メイン画面に テキストボックスとボタン追加
作成したプロジェクト内に「MainPage.xaml」があるので下記のように編集する。
「MainPage.xaml」のコードは下記を追加する。
<HorizontalStackLayout HorizontalOptions="Center"> <Entry x:Name="TextField1" Text="" HorizontalOptions="Center" WidthRequest="200"/> <Button Text="Execute Script" Clicked=""></Button> </HorizontalStackLayout>
MAUIの場合、 テキストボックスは<Entry />です。
ボタンイベントを作成
「MainPage.xaml」作成したButtonのClicked=””の空部分で、 コントロール+スペースで「New Event Handler」を選ぶ
「MainPage.xaml.cs」C#コード側にボタンイベントが作成されました。
各プラットフォームに対応するコードを記述していく
プロジェクト内 Platformsは、 Android, iOS, MacCatalyst, Tizen, Windows フォルダがあり、
それぞれに対応するコードが書ける。
この5つのプラットフォームに ダミークラスを用意する。
public class TUtils : IUtils { public string ScriptExecute(string text) { return ""; } }
MacCatalystフォルダ内のTUtils.cs↓だけ中身を書く
using System; using Foundation; public class TUtils : IUtils { public string ScriptExecute(string text) { try { NSDictionary d1; var scrpt = new NSAppleScript(text); var exe = scrpt.ExecuteAndReturnError(out d1); if (d1 == null) { string s = exe.StringValue; return s; } } catch (Exception _e) { Console.WriteLine(_e.Message); } return ""; } }
MainPage.xaml近くに共通するIUtilsインターフェイスを作成する。
public interface IUtils { public string ScriptExecute(string text); }
MainPage.xamlのボタンから作成した関数ScriptExecute()を呼び出す。
先程作成したイベント MainPage.xaml.csのButton_Clicked()の中を、 下記に編集する。
void Button_Clicked(System.Object sender, System.EventArgs e) { var u1 = new TUtils(); TextField1.Text = u1.ScriptExecute("set value to \"Execute AppleScript.\""); }
上記コードのScriptExecute()引数の文字列に、 簡単な文字を返すだけのAppleScriptコードを入れました。
macOSで実行するので、 「MacCatalyst フォルダ」にあるTUtilsクラスが呼ばれます。
実行画面
下↓のようにボタンを押すとAppleScriptが実行されました。