C# を PowerShell で実行 : Form 内のテキストフィールドに入力した結果をファイルに書き込む

PowerShell のコマンドウインドウで実行すると、2回目以降がエラーになるので、powershell に引数を渡して(バッチファイル)実行させています。

バッチ処理で、どうしても複雑な入力パラメータが必要な時に使えると思います。

関連する記事

C# を PowerShell で実行 : メッセージボックスの応答結果をファイルに書き込む ( バッチファイルで利用可能 )


form1.ps1
01.$code = @"
02.using System;
03.using System.IO;
04.using System.Windows.Forms;
05.public class MyClass {
06. 
07.        // ▼ これは無くても動作する
08.        [STAThread]
09.        public static void Main()
10.        {
11.                // テンプレート部分( 最初から記述されている )
12.                Application.EnableVisualStyles();
13.                Application.SetCompatibleTextRenderingDefault(false);
14.                // Form1 の作成
15.                Application.Run(new Form1());
16.        }
17. 
18.        // Form1 クラス
19.        private class Form1 : Form
20.        {
21.                // コンストラクタ
22.                public Form1()
23.                {
24.                        InitializeComponent();
25.                }
26. 
27.                // 画面作成( デザイナが作成したもの )
28.                private void InitializeComponent()
29.                {
30.                        this.textBox1 = new System.Windows.Forms.TextBox();
31.                        this.button1 = new System.Windows.Forms.Button();
32.                        //
33.                        // textBox1
34.                        //
35.                        this.textBox1.Location = new System.Drawing.Point(47, 49);
36.                        this.textBox1.Name = "textBox1";
37.                        this.textBox1.Size = new System.Drawing.Size(191, 19);
38.                        this.textBox1.TabIndex = 0;
39.                        //
40.                        // button1
41.                        //
42.                        this.button1.Location = new System.Drawing.Point(274, 47);
43.                        this.button1.Name = "button1";
44.                        this.button1.Size = new System.Drawing.Size(75, 23);
45.                        this.button1.TabIndex = 1;
46.                        this.button1.Text = "実行";
47.                        this.button1.UseVisualStyleBackColor = true;
48.                        this.button1.Click += new System.EventHandler(this.button1_Click);
49. 
50.                        //this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
51.                        this.ClientSize = new System.Drawing.Size(400, 150);
52.                        this.Controls.Add(this.button1);
53.                        this.Controls.Add(this.textBox1);
54.                        this.Text = "フォームのタイトル";
55.                        this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
56.                }
57. 
58.                // ボタンをクリックした時のイベント
59.                private void button1_Click(object sender, EventArgs e)
60.                {
61.                        Console.WriteLine("button1_Click");
62. 
63.                        // テンポラリフォルダのパスを取得
64.                        string path = Environment.GetEnvironmentVariable("temp");
65. 
66.                        // 書き込むファイルのフルパスを編集する
67.                        string writePath = string.Format( @"{0}\_input_result", path );
68. 
69.                        using (StreamWriter sw = new StreamWriter(writePath, false))
70.                        {
71.                                // 書き込み
72.                                sw.Write( textBox1.Text );
73. 
74.                                // ファイルを閉じます
75.                                sw.Close();
76. 
77.                        }
78. 
79.                        // アプリケーション終了
80.                        Application.Exit();
81.                }
82. 
83.                // コントロール用変数
84.                private System.Windows.Forms.TextBox textBox1;
85.                private System.Windows.Forms.Button button1;
86.        }
87.}
88."@
89. 
90.Add-Type -Language CSharp -TypeDefinition $code -ReferencedAssemblies ("System.Windows.Forms","System.Drawing")
91. 
92.[MyClass]::Main()


form1.bat