0

VBScript を使用してプロセスを終了するのが好きです。残念ながら、著者がプロセスを強制終了する方法を説明している例しか見つかりませんでした。

私は閉鎖を求めるのが好きです。したがって、objProcess.Terminate() は役に立ちません。

Windows XP SP3 を管理者権限で使用しています。

何か案は?

ありがとうございました!

4

2 に答える 2

0

次のように、 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秒後、「グレースフル終了」のメッセージボックスが表示されます。

これは、一定時間後にスクリプトを終了し、スクリプトが自動的に終了しなかった場合にクリーンアップを実行する場合に役立ちます。これがあなたが探している解決策をカバーしているかどうかはわかりません。

于 2012-06-12T05:40:23.447 に答える
-1

そのため、最終的に問題の解決策を見つけましたが、VBS を使用しても解決されません。「SendSignal」と呼ばれる任意のプロセスに CTRL-BREAK を送信するために作成されたプログラムがあります。以前にこれを試したことがありますが、応答していたプロセスはすべてエラーメッセージであり、実行を続けていました。

CTRL+C を送信してこのプログラムを変更しました。この後、Javaw プロセスを静かに閉じることができました。

助けてくれてありがとう!

于 2012-06-25T14:55:07.907 に答える