杀死指定进程名称的小VBS

时间:2022-09-18 18:33:37

以下是一小段杀死指定进程名字的小vbs,希望对大家有帮助。

?
1
2
3
4
5
6
7
8
Function KillProc(strProcName)
On Error Resume Next
 Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
 Set arrProcesses = objWMIService.ExecQuery( "select * from win32_process where Name ='"&strProcName&"'" )
 For Each proccess In arrProcesses
 proccess.Terminate 0
 Next
End Function

VBS命令-进程操作代码(检测进程, 结束进程)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//检测进程
进程名 = "qq.exe"
返回值 = IsProcess(进程名)
If 返回值 = True Then
MessageBox "发现进程"
ElseIf 返回值 = False Then
MessageBox "没有发现进程"
End If
//检测进程 优化后的代码
If IsProcess("qq.exe") = True Then
MessageBox "发现进程"
Else
MessageBox "没有发现进程"
End If
//检测进程组
进程组 = "qq.exe|notepad.exe"
返回值 = IsProcessEx(进程组)
If 返回值 = True Then
MessageBox "发现进程"
ElseIf 返回值 = False Then
MessageBox "没有发现进程"
End If
//检测进程组 优化后的代码
If IsProcessEx("qq.exe|notepad.exe") = True Then
MessageBox "发现进程"
Else
MessageBox "没有发现进程"
End If
//结束进程 前台执行
进程名 = "qq.exe"
Call CloseProcess(进程名, 1)
//结束进程 后台执行
进程名 = "qq.exe"
Call CloseProcess(进程名, 0)
//结束进程组 前台执行
进程组 = "qq.exe|notepad.exe"
Call CloseProcessEx(进程组, 1)
//结束进程组 后台执行
进程组 = "qq.exe|notepad.exe"
Call CloseProcessEx(进程组, 0)
//实例应用 结束进程 前台执行 10秒超时
进程名 = "qq.exe"
For 10
Call CloseProcess(进程名,1)
Delay 1000
返回值 = IsProcess(进程名)
If 返回值 = False Then
Exit For
End If
Next
If 返回值=True Then
MessageBox "结束进程失败"
Else
MessageBox "结束进程成功"
End If
//实例应用 结束进程 前台执行 优化后的代码(直到型循环) 有些进程VBS检测不到 所以先关闭后检测
Do
Call CloseProcess("qq.exe",1)
Delay 1000
Loop While IsProcess("qq.exe")=True
MessageBox "结束进程成功"
//实例应用 结束进程组 后台执行 10秒超时
进程组 = "qq.exe|notepad.exe"
For 10
Call CloseProcessEx(进程组,0)
Delay 1000
返回值 = IsProcessEx(进程组)
If 返回值 = False Then
Exit For
End If
Next
If 返回值=True Then
MessageBox "结束进程失败"
Else
MessageBox "结束进程成功"
End If
//实例应用 结束进程组 后台执行 优化后的代码(直到型循环) 有些进程VBS检测不到 所以先关闭后检测
Do
Call CloseProcessEx( "qq.exe|notepad.exe",0)
Delay 1000
Loop While IsProcessEx( "qq.exe|notepad.exe")=True
MessageBox "结束进程成功"
//函数 子程序部分代码
//检测进程
Function IsProcess(ExeName)
Dim WMI, Obj, Objs,i
IsProcess = False
Set WMI = GetObject("WinMgmts:")
Set Objs = WMI.InstancesOf("Win32_Process")
For Each Obj In Objs
If InStr(UCase(ExeName),UCase(Obj.Description)) <> 0 Then
IsProcess = True
Exit For
End If
Next
Set Objs = Nothing
Set WMI = Nothing
End Function
//结束进程
Sub CloseProcess(ExeName,RunMode)
dim ws
Set ws = createobject("Wscript.Shell")
ws.run "cmd.exe /C Taskkill /f /im " & ExeName,RunMode
Set ws = Nothing
End Sub
//检测进程组
Function IsProcessEx(ExeName)
Dim WMI, Obj, Objs,ProcessName,i
IsProcessEx = False
Set WMI = GetObject("WinMgmts:")
Set Objs = WMI.InstancesOf("Win32_Process")
ProcessName=Split(ExeName,"|")
For Each Obj In Objs
For i=0 to UBound(ProcessName)
If InStr(UCase(ProcessName(i)),UCase(Obj.Description)) <> 0 Then
IsProcessEx = True
Exit For
End If
Next
Next
Set Objs = Nothing
Set WMI = Nothing
End Function
//结束进程组
Sub CloseProcessEx(ExeName,RunMode)
dim ws,ProcessName,CmdCode,i
ProcessName = Split(ExeName, "|")
For i=0 to UBound(ProcessName)
CmdCode=CmdCode & " /im " & ProcessName(i)
Next
Set ws = createobject("Wscript.Shell")
ws.run "cmd.exe /C Taskkill /f" & CmdCode,RunMode
Set ws = Nothing
End Sub