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 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=to ubound(xs) 
for n=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=
For i=To UBound(xs)
If d0.Exists(xs(i))=False Then 
     
xs(i)="-2"
     
w=w+1
End If
Next
w=(UBound(xs)+ olor="#FF0000">1-w)  
If w=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=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 In pro_s
       pd=p.terminate()
       
If pd=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=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>

 
目前有0条回应
Comment
Trackback
你目前的身份是游客,请输入昵称和电邮!