プロセスを停止させるコマンド を JavaScript関数化

更新日:

特定のプロセスを終了したい場合があるかと思います。
そんな時には、「taskkill」コマンドを利用しましょう。


taskkillコマンドの使い方

今回は、プロセスID(PID)か、ユーザー名指定の消し方を紹介します。
その他の詳しい指定オプションに関しては、TechNetを参照ください。

Taskkill - TechNet - Microsoft
http://technet.microsoft.com/ja-jp/library/cc725602%28v=ws.10%29.aspx

イメージ名を指定する場合は「/im」オプションと、イメージ名を指定します。

c:\user\test_user>taskkill /im Skype.exe

PIDを指定する場合は「/pid」オプションと、PIDを指定します。

c:\user\test_user>taskkill /pid 3620

これらのオプションだけでは、指定プロセスが呼び出した子プロセスはkillされません。
子プロセスまで行う場合は、「/t」オプションを追加しましょう。

JavaScript関数化

(実際はJScriptになるわけですが、そこは記事の検索率UPという事でご勘弁)

関数化するために必要なのは、
・WshShellオブジェクトを生成する
・run関数で、コマンドを実行
です。

コマンドを叩く必要があるのでShellオブジェクトを作成しましょう。

// ActiveX版
var shell = new ActiveXObject("WScript.Shell"); 

// WScript版
var shell = WScript.CreateObject("WScript.Shell");

後は、「run」コマンドでウィンドウ無しで実行しちゃうだけです。

shell.run( 'cmd /c taskkill /im "Skype.exe"’, 0, true );

さて、準備が整いました。これらを使って関数化しましょう

// 指定プロセスを停止させる
//  イメージ名指定 :文字列
//  プロセスID指定:数値
//
// 単品or配列での指定が可能
function taskKill( param ){

  var shell = WScript.CreateObject("WScript.Shell");
//var shell = new ActiveXObject("WScript.Shell"); 

  // 配列指定対応
  if( param instanceof Array ){
    for( var i=0 ; i < param.length ; ++i ){
      kill( param[i] );
    }
  }else{
    kill( param );
  }

  // 内部関数
  function kill( p ){
    if( typeof( p ) === "number" ){
      // 数値なら PID指定として実行
      shell.run( 'cmd /c taskkill /pid ' + p, 0, true );
    }else{
      // イメージ名指定として実行
      shell.run( 'cmd /c taskkill /im '  + p , 0, true );
    }
  }
}

使用例

taskKill( "Skype.exe" ); // イメージ名指定
taskKill( 3620 );        // PID指定

// 配列指定
taskKill( ["iexplore.exe", "firefox.exe"] );
taskKill( [3600, 4210] );

ちょっとしたJavaScriptの関数化Tipsを織り交ぜての紹介となりました。

プロセスが存在しているかどうか見るには、
tasklist」コマンドで代用できたりします。
存在するかどうかの関数化に関してはまた次回。

-JavaScript
-,

Copyright© 打ち聞かせ , 2024 All Rights Reserved Powered by STINGER.