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
1.
@powershell -NoProfile -ExecutionPolicy Unrestricted
"./form1.ps1"