以下是一小段杀死指定进程名字的小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 |