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が実行されました。