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 秒后会出现一个带有“Gracefull 终止”的消息框。

当您想在一段时间后退出脚本并在脚本没有自行结束时运行清理时,这很有用。我不知道这是否涵盖了您正在寻找的解决方案。

于 2012-06-12T05:40:23.447 回答
-1

所以,最后我找到了我的问题的解决方案,但没有使用 VBS 解决。有一个程序可以将 CTRL-BREAK 发送到任何名为“SendSignal”的进程。我以前试过这个,但是我所有的响应过程都是一条错误消息,它一直在运行。

我更改了发送 CTRL+C 的程序。在此之后,我能够轻轻地关闭我的 Javaw 进程。

感谢大家的帮助!

于 2012-06-25T14:55:07.907 回答