EmEditorの外部ツールからAWKを呼び出すときにスクリプトファイルを選択するため。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System; using System.Windows.Forms; using System.IO; namespace ScriptSelector { static class Program { /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { // プロジェクトのプロパティから出力をコンソールにする。 string[] args = Environment.GetCommandLineArgs(); string arg = ""; if (args.Length == 2 && File.Exists(args[1]) && Path.GetExtension(args[1]) == ".txt") arg = args[1]; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var f = new Form1(arg); f.ShowInTaskbar = false; // EmEditor外部ツールではこれがないと固まる Application.Run(f); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
using System; using System.Diagnostics; using System.IO; using System.Windows.Forms; namespace ScriptSelector { public partial class Form1 : Form { public Form1(string textPath) { InitializeComponent(); var scriptPaths = Directory.GetFiles(@"G:\Dropbox\My Cloud Work\Text\awk", "*.awk", SearchOption.AllDirectories); foreach(string p in scriptPaths) { comboBox1.Items.Add(Path.GetFileNameWithoutExtension(p)); } comboBox1.SelectedIndexChanged += (s, e) => { using (var process = new Process()) { string file = @"G:\Dropbox\My Cloud Work\Utility\gawk 5.1\bin\gawk.exe"; string option = @"-f ""G:\Dropbox\My Cloud Work\Text\awk\" + comboBox1.Text + @".awk"" ""\n"""; if (textPath != "") option = @"-f ""G:\Dropbox\My Cloud Work\Text\awk\" + comboBox1.Text + @".awk"" """ + Path.GetFullPath(textPath) + @""""; var info = new ProcessStartInfo(file, option); info.RedirectStandardOutput = true; info.RedirectStandardError = true; info.CreateNoWindow = true; info.UseShellExecute = false; process.StartInfo = info; process.Start(); string output = process.StandardOutput.ReadToEnd(); process.StandardOutput.Close(); if (output != "") Console.Out.Write(output); } Application.ExitThread(); }; } } } |