Mac環境でC#から標準テキストエディタを開く

Mac環境でC#から標準テキストエディタを開く

Mac環境でC#から標準テキストエディタを開く方法。
ターミナルで間接的にTextEditを実行。

関連ページ
C#からMacの標準テキストエディタ(TextEdit)でテキストを開こうとしたものの、どうやっても解決できなかった。
最終的に直接開くのはあきらめて、C#からターミナルを通して間接的に開くようにした。

こんなことが起きてるのは自分の環境だけかもしれないけど一応共有。

C#からTextEdit.appを開く

ネットで調べると、ProcessStartInfoから
"/Applications/TextEdit.app/Contents/MacOS/TextEdit"
を指定すると開けると書いてありました。しかしこれがどうやっても開けない。

他にも"/Applications/TextEdit.app"やら
"/System/Applications/TextEdit.app/Contents/MacOS/TextEdit"やら
10種類ほどネットに転がってる情報で試しましたが全く開けない。

しょうがないのでC#からターミナルを使って迂回させることに。
まずターミナルから実行するopen_text_edit.shというシェル作成します。内容は次の通り。
open -a TextEdit $1
$1の引数部分はC#側から指定します。

続いてC#側のコードを用意、内容は次の通り。
        var scriptPath = 
 [用意したopen_text_edit.shのパス] 
;
        var argument = 
 [開きたいテキストファイルのパス] 
;

        ProcessStartInfo pInfo = new ProcessStartInfo();
        pInfo.FileName = "/bin/bash";
        pInfo.Arguments = $"{scriptPath} {argument}";
        pInfo.ErrorDialog = true;
        pInfo.UseShellExecute = true;
        Process.Start(pInfo);
これでOK。

C#からTextEdit.appを閉じる

一応C#からTextEditを閉じる方法も共有。こっちはシンプル。
        Process[] ps = Process.GetProcessesByName("textedit");
        foreach (Process p in ps)
        {
            p.CloseMainWindow();
            p.Close();
        }
0
0