まずは動作確認の為、VisualStudio でコードを完成させます。
using System;
using System.IO;
using System.Windows.Forms;
namespace MessageBoxConsole
{
class Program
{
static void Main(string[] args)
{
// テンポラリフォルダのパスを取得
string path = Environment.GetEnvironmentVariable("temp");
// 書き込むファイルのフルパスを編集する
string writePath = $@"{path}\_check_result";
// MessageBox を表示する( System.Windows.Forms の参照が必要です )
// ※ OK か Cancel のボタンが表示されます
DialogResult check = MessageBox.Show("実行しますか?", "確認", MessageBoxButtons.OKCancel);
using (StreamWriter sw = new StreamWriter(writePath, false))
{
// OK ならば、ファイルに 1 を書き込みます
if (check == DialogResult.OK)
{
sw.Write("1");
}
// CANCEL ならば、ファイルに 0 を書き込みます
else
{
sw.Write("0");
}
// ファイルを閉じます
sw.Close();
}
}
}
}
▼ System.Windows.Forms の参照次に PowerShell のスクリプトを作成して C# のコードを実行させます。その為に、PowerShell でスクリプトの実行を許可する手順 で設定を済ませておきます。 msgbox.ps1
$code = @"
using System;
using System.IO;
using System.Windows.Forms;
public class MyClass {
public static void Main() {
// テンポラリフォルダのパスを取得
string path = Environment.GetEnvironmentVariable("temp");
// 書き込むファイルのフルパスを編集する
string writePath = string.Format( @"{0}\_check_result", path );
// MessageBox を表示する( System.Windows.Forms の参照が必要です )
// ※ OK か Cancel のボタンが表示されます
DialogResult check = MessageBox.Show("実行しますか?", "確認", MessageBoxButtons.OKCancel);
using (StreamWriter sw = new StreamWriter(writePath, false))
{
// OK ならば、ファイルに 1 を書き込みます
if (check == DialogResult.OK)
{
sw.Write("1");
}
// CANCEL ならば、ファイルに 0 を書き込みます
else
{
sw.Write("0");
}
// ファイルを閉じます
sw.Close();
}
}
}
"@
Add-Type -Language CSharp -TypeDefinition $code -ReferencedAssemblies ("System.Windows.Forms")
[MyClass]::Main()
テキストファイルに結果を出力しているので、以下のようなバッチファイルで利用する事ができます
echo off echo 処理を開始しました powershell .\msgbox.ps1 FOR /F %%i IN (%temp%\_check_result) DO ( if "%%i"=="1" goto :ok if "%%i"=="0" goto :cancel ) :ok echo OK を選択しました goto :end :cancel echo Cancel を選択しました goto :end :end
次に PowerShell のスクリプトを作成して C# のコードを実行させます。その為に、

Excelで名前を付けて保存で PDF に保存できますが、これはスクリプトで行うコードです。
( プリンタが使える状態でないと動作しません )
SHIFT+TAB > 右矢印
画面タブで設定
▼ こんな感じで取得されます
"C:\Program Files\7-Zip\7-zip.dll"
filepath.vbs( SendTo ディレクトリに置いてください )
▼ うまくいくとこんな感じです
nslookup.exe
ntdll.dll
odbc32.dll
ole32.dll
操作補足
エクスプローラで SendTo フォルダに移動するには、アドレスバーに sendto と直接入力します。テンポラリフォルダは、%temp% と入力して下さい。
コードを直接ダウンロードした場合は、右クリックのプロパティより『許可する』にチェックしておきます。
さらにこのショートカットをスタートアップにコピーする事もできます。
スタートアップフォルダは、エクスプローラのアドレス部分に『sendto』と入力し、一つ上に上がって『スタートメニュー』に入り、『プログラム』>『スタートアップ』です

