我喜欢使用 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 秒后会出现一个带有“Gracefull 终止”的消息框。
当您想在一段时间后退出脚本并在脚本没有自行结束时运行清理时,这很有用。我不知道这是否涵盖了您正在寻找的解决方案。
所以,最后我找到了我的问题的解决方案,但没有使用 VBS 解决。有一个程序可以将 CTRL-BREAK 发送到任何名为“SendSignal”的进程。我以前试过这个,但是我所有的响应过程都是一条错误消息,它一直在运行。
我更改了发送 CTRL+C 的程序。在此之后,我能够轻轻地关闭我的 Javaw 进程。
感谢大家的帮助!