9月5日の「アプリケーションの強制終了」に
丸中太郎さんが "TASKKILL" というコマンドが
あることを教えてくださいました。
残念ながらこのコマンドは WINDOWS XP
Professional でしか使えません。
実際に使用したいOSはWINDOWS 2000です。
XPから2000へTASKKILL.EXE をコピーして
走らせたら、XP以後のOSでないとだめという
メッセージが表示されました。
NTや2000用に同じ機能のKILLというコマンドが
あるようですがOSのCDの中からパソコンに
複写しなければいけないようです。
CDは手元にありません。
ジャンヌネットさんのホームページの中に
"Processに関するTips"というサンプル
プログラムがあります。
"指定した名前に合致するすべてのプロセスを
取得する"
"他のプログラムのメインウィンドウを
閉じて終了する"
C#のこの2つのサンプルを組み合わせて
下記のプログラムを作ってみました。
作ったとはいえませんね。ほとんどサンプル
をそのまま使わせてもらったものです。
始めてのC#プログラムが走りました!
強制終了させたいプログラムを3つ立ち上げて
おいてこのプログラムを実行したら3つとも
終了しました。
どれか1つだけ落としたいということは
できません。立ち上がっているプログラムは
すべて落ちます。
成功するとうれしいですね。
参考になる情報をくださった丸中太郎さん、
サンプル使わせて頂いたジャンヌネットさん
とうもありがとう。
using System;
using System.Collections.Generic;
using System.Text;
namespace test
{
  class Program
  {
    static void Main(string[] args)
    {
      // A0001 という名前のプロセスをすべて取得する
      System.Diagnostics.Process[] hProcesses = System.Diagnostics.Process.GetProcessesByName("A0001");
      string stPrompt = string.Empty;
      foreach (System.Diagnostics.Process hProcess in hProcesses) {
        // メイン ウィンドウにクローズ メッセージを送信する
        if (!hProcess.CloseMainWindow())
        {
          hProcess.Kill();  // 終了しなかった場合は強制終了する
        }
        // 不要になった時点で破棄する (正しくは オブジェクトの破棄を保証する を参照)
        hProcess.Close();
        hProcess.Dispose();
      }
    }
  }
}