• 解説

    起動しているプロセスを探したり、どうしても終了したいプロセスがある場合は、APIを使用し下記のような手順で検索・強制終了することができます。
    (強制終了にはそれなりのリスクがありますので覚悟してください)

    まず、起動しているプロセスをEnumProcessesを使用して列挙します。
    EnumProcessesではプロセスIDの一覧を返しますので、そのIDを使用してOpenProcessでプロセスハンドルを取得します。
    プロセスハンドルを取得できるとGetModuleBaseNameでモジュール名を取得できます。
    (アプリケーションで使用しているモジュールのすべてのファイル名を知りたい場合はEnumProcessModulesを使用します)
    その後、CloseHandleで取得したプロセスハンドルを閉じます。

  • 手順

    1. 下記のAPIを定義します。

      CloseHandle
      EnumProcesses
      GetModuleBaseName
      OpenProcess
      TerminateProcess
      
    2. EnumProcessesで起動しているプロセスIDの一覧を取得します。
    3. [No.2]で取得したプロセスIDをOpenProcessに渡しプロセスハンドルを取得します。
    4. [No.3]で取得したプロセスハンドルをGetModuleBaseNameに渡しモジュール名を取得します。
    5. [No.3]で取得したプロセスハンドルをCloseHandleに渡し閉じます。
    6. [No.4]で取得したモジュール名を判断し終了したいプロセスであればTerminateProcessに[No.2]で取得したプロセスIDを渡し強制終了します。
  • その他

    AccessのVBAおよびAPIの知識が必要です。
    NT系OS限定です。9x系だとToolHelp APIを使用します。
    カレントユーザーのプロセスのみ有効です。
    カレントユーザー以外で起動されたプロセスを取得したい場合はHKEY_PERFORMANCE_DATAからパフォーマンスデータを取得します。

説明がわからないなどありましたらお問い合わせでお知らせください。

ここに掲載された情報を使用したことによって発生した、いかなる損害に対しても
管理者である雅は一切責任を負いません。