準備
(なし)
デザイン
1. フォーム (Form1) にボタン (button1) を配置します。
サンプルコード (C#)
// 名前空間の追加
using System.Diagnostics;
// コード
private void button1_Click(object sender, EventArgs e)
{
Process ps = new Process();
ps.StartInfo.FileName = "notepad.exe";
button1.Text = "電卓実行中...";
ps.Start();
while (!ps.HasExited)
{
System.Threading.Thread.Sleep(500);
Application.DoEvents();
}
button1.Text = "button1";
}
解説
電卓を起動して、終了するまで待機します。プロセスの起動状態は HasExited プロパティで判断できます。このプロパティが false の間はループ処理を行い、DoEvents メソッドにより、他のメッセージを処理しています。このため、呼び出し元アプリケーションが固まることはありません。
結果

動作確認環境
Visual Studio 2015 Professional (C# 6.0)
2. フォーム (Form1) にリストボックス (listBox1) を配置します。