人気ブログランキング | 話題のタグを見る

[VBScript] 指定した名前のプロセスを強制終了するツール

どーもボキです。

タスクマネージャーに残ったプロセスを一つひとつ終了させるのは面倒。こういうときは強制終了処理をツール化すればよい。



指定プロセスの強制終了ツールのダウンロードと使い方

  • ダウンロード
  • 使い方は、実行して上図のダイアログにプロセス名を入れる、だけ。

強制終了ツールはVBScriptのみでも実現可能。けれど……。

    以下のような処理を組めば、VBScriptのみで任意のプロセスを終了させることもできます。
    けれど、VBScriptのみで実現することにこだわらなくても良いですよね。

    TerminateProcess関数のソース(WbemScripting.SWbemLocator利用版)

      TerminateProcess("iexplore.exe")

      '-------------------------------------------------------------------------------
      ' 指定した名前のプロセスを強制終了する
      '-------------------------------------------------------------------------------
      Sub TerminateProcess(ProcessName)
      Dim Service,QfeSet,Qfe
      Set Service = CreateObject("WbemScripting.SWbemLocator").ConnectServer
      Set QfeSet = Service.ExecQuery("Select * From Win32_Process Where Caption='" & ProcessName & "'")
      For Each Qfe In QfeSet
      Qfe.Terminate
      Next
      End Sub


    コマンドプロンプトを利用すればもっとシンプルに実装できます。

    TerminateProcess関数のソース(コマンドプロンプト利用版)

      TerminateProcess("iexplore.exe")

      '-------------------------------------------------------------------------------
      ' 指定した名前のプロセスを強制終了する
      '-------------------------------------------------------------------------------
      Sub TerminateProcess(ProcessName)
      Dim objWS: Set objWS = CreateObject("WScript.Shell")

      ' 強制終了を実行(非表示のコマンドプロンプトで「TASKKILL」コマンドを実行させる)
      objWS.Run "cmd /c taskkill /f /im " & s & "*", 0, True
      End Sub


この記事での気付き

    VBScriptのみでの対応ではなく、コマンドプロンプトのハイブリット開発が効率的!
    • 文字列処理は、VBScript
    • プロセスの強制終了は、コマンドプロンプト
    といった具合に、得意な処理を分担させると無駄がなくスマート!!

    VBScriptに限らず、こういった処理系を使い分けるという考え方、超重要ですよ。
    親子の関係は「上司と部下」。「友達」には決してなるな!

2012/5/27掲載記事の更新。

今回開発したプログラムソース





Dim objWS: Set objWS = CreateObject("WScript.Shell")
Dim objFS: Set objFS = CreateObject("Scripting.FileSystemObject")

Dim s
s = WScript.ScriptFullName

' 設定ファイル名を生成
Dim fpth
fpth = objFS.GetParentFolderName(s) & "\" & objFS.GetBaseName(s) & "_設定.txt"


' 設定を取得

s = ""
If objFS.FileExists(fpth) Then s = objFS.OpenTextFile(fpth, 1).ReadLine

s = InputBox("プロセス名を入力ください", "プロセスの強制終了", s)
If s = "" Then WScript.Quit

' 設定を保存
objFS.CreateTextFile(fpth, True).WriteLine s

' 強制終了を実行(非表示のコマンドプロンプトで「TASKKILL」コマンドを実行させる)
objWS.Run "cmd /c taskkill /f /im " & s & "*", 0

Commented by 名無し at 2023-04-02 19:10 x
「TASKKILL」コマンドだと一瞬ウインドウが表示されてしまいまして
VBScriptで実現してくれてありがとう
Commented by yozda at 2023-04-03 00:08
> 名無しさん
役に立ったなら幸い
by yozda | 2021-05-27 12:10 | プログラミング | Comments(2)