VBScript を使用してプロセスを終了するのが好きです。残念ながら、著者がプロセスを強制終了する方法を説明している例しか見つかりませんでした。
私は閉鎖を求めるのが好きです。したがって、objProcess.Terminate() は役に立ちません。
Windows XP SP3 を管理者権限で使用しています。
何か案は?
ありがとうございました!
次のように、 MSDNCloseMainWindow
で説明されているように、プロセスでおよびClose
メソッドを試すことができます。
Sub KillingMeSoftly(processName)
'partly copied from http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/processes/
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & processName & "'")
For Each objProcess in colProcessList
objProcess.CloseMainWindow
objProcess.Close
Next
End Sub
これは悪い答えでした
更新
答えを検索しているときに、// T:nnオプションを指定してスクリプトを開始すると、オブジェクトでTerminateイベントがトリガーされることを発見しました。
class Foo
sub class_terminate
msgbox "Gracefull termination"
' Put your own termination code here.
end sub
end class
dim bar
set bar = new Foo
do
loop ' makes the script run forever
これを名前を付けて保存c:\endless.vbs
このスクリプトを実行すると、エンドレスループでハングするため、終了イベントがトリガーされることはありませんが、タイムアウトでスクリプトを開始すると、終了イベントがトリガーされます。コマンドプロンプトからスクリプトを開始します。
C:\>wscript endless.vbs //T:5
5秒後、「グレースフル終了」のメッセージボックスが表示されます。
これは、一定時間後にスクリプトを終了し、スクリプトが自動的に終了しなかった場合にクリーンアップを実行する場合に役立ちます。これがあなたが探している解決策をカバーしているかどうかはわかりません。
そのため、最終的に問題の解決策を見つけましたが、VBS を使用しても解決されません。「SendSignal」と呼ばれる任意のプロセスに CTRL-BREAK を送信するために作成されたプログラムがあります。以前にこれを試したことがありますが、応答していたプロセスはすべてエラーメッセージであり、実行を続けていました。
CTRL+C を送信してこのプログラムを変更しました。この後、Javaw プロセスを静かに閉じることができました。
助けてくれてありがとう!