vbs+hta 实现同时关闭多个系统进程

本代码通过 xp mshta.exe 解析执行
-----------------------------------------------------------------------------------
<HEAD>
<title>进程中断</title>
<HTA:APPLICATION
APPLICATIONNAME="进程中断"
BORDER="THICK"
caption="进程中断"
maximizebotton="yes"
minmizebutton="yes"
scroll="yes"
showintaskbar="yes"
singleinstance="yes"
sysmenu="yes"
windowstate="maximize"
>
</HEAD>
<SCRIPT LANGUAGE="VBScript">

Set os0=createobject("shell.application")
Set wmi=GetObject("winmgmts://.")
Set d0=CreateObject("scripting.dictionary")

Sub list
d0.RemoveAll
n=1
dataarea.innerhtml=Nothing
strHTML = strhtml&"<table border='1' style='border-collapse: collapse' "    & _
           "bordercolor='#111111' width='100%' id='Table1' >"
strhtml = strhtml&"<tr>"& _
     "<td width='3%'>"&"<font size=2>"&"序号"&"</font>"&"</td>"& _
     "<td width='20%'>"&"<font size=2>"&"名称"&"</font>"&"</td>"& _
     "<td width='7%'>"&"<font size=2>"&"PID"&"</font>"&"</td>"& _
     "<td width='70%'>"&"<font size=2>"&"命令行"&"</font>"&"</td>"
Set pro_s=wmi.instancesof("win32_process")
For Each p In pro_s
strhtml = strhtml&"<tr>"& "<td width='3%'>"&    _
      "<font size=2>"&n&"</font>"&"</td>"&"<td width='20%'>"& _
      "<font size=2>"&p.name&"</font>"&"</td>"& "<td width='7%'>"& _
      "<font size=2>"&p.handle&"</font>"&"</td>"& "<td width='70%'>"& _
      "<font size=2>"&p.commandline&"</font>" _
      &"</td>"
    
d0.Add ""&n,Trim(p.handle)
n=n+1
Next
dataarea.innerhtml=strhtml
End Sub


Sub stop_p
xs=Split(txt.value,",",-1,1)
for i=0 to ubound(xs) 
for n=0 to ubound(xs)
    if n=i then 
     n=n+1
     if n>ubound(xs) then exit for
    end if
    if xs(n)=xs(i) or _
     Trim(xs(n))="" Then 
     xs(n)="-1"
    end If
next
Next
w=0 
For i=0 To UBound(xs)
If d0.Exists(xs(i))=False Then 
     xs(i)="-2"
     w=w+1
End If
Next
w=(UBound(xs)+1-w)  
If w=0 Then
MsgBox "需要中断的进程序号列表无效,"&Chr(13)& _
     "可能需要关闭的进程不存在或者输入的序号格式不正确,请打开进程列表确认!"
Else
strhtml="<font size=2>"&"已被中断的进程"&"</font>"&"<br>"
strHTML = strhtml&"<table border='1' style='border-collapse: collapse' "    & _
           "bordercolor='#111111' width='100%' id='Table1' >"
For i=0 To UBound(xs)
If xs(i) <> "-2" Then 
Set pro_s=wmi.EXECQUERY("Select * FROM WIN32_PROCESS Where HANDLE='"&D0(XS(I))&"'" )
    N=1
    For Each p In pro_s
       pd=p.terminate()
       If pd=0 Then 
     strhtml = strhtml&"<tr>"& "<td width='3%'>"&"<font size=2>"&xs(i)&"</font>"&"</td>"& _
        "<td width='20%'>"&"<font size=2>"&p.name&"</font>"&"</td>"& _
        "<td width='7%'>"&"<font size=2>"&p.handle&"</font>"&"</td>"& _
        "<td width='70%'>"&"<font size=2>"&p.commandline&"</font>"&"</td>"
     D0.Remove(xs(i))
     n=n+1
       End If
    Next
    If N=0 Then '要关闭的进程可能被牵连关闭了
     strhtml = strhtml&"<tr>"& "<td width='3%'>"&    _
        "<font size=2>"&xs(i)&"</font>"&"</td>"&"<td width='20%'>"& _
        "<font size=2>"&p.name&"</font>"&"</td>"& "<td width='7%'>"& _
        "<font size=2>"&p.handle&"</font>"&"</td>"& "<td width='70%'>"& _
        "<font size=2>"&p.commandline&"     已经被间接关闭"&"</font>"& _
        "</td>"
     D0.Remove(xs(i))
    End if
End If
Next
dataarea.innerhtml=dataarea.innerhtml&strhtml
txt.value=""
End If
End Sub


</SCRIPT>

<body>
<input type="button" value="进程列表" name="list_button"    onClick="list"><p>
<span id="dataarea"></span><br>
输入欲中断的进程序号,如:1,2,5,7,55...
<input type="text" name="txt" size=60 value="">
<input type="button" value="中断进程" name="stop_p_button"    onClick="stop_p">
<p>
</body> 

你可能感兴趣的:(list,table,application,VBScript,border,scroll)