或者

杀死指定进程名称的小VBS

作者:徐小样 浏览:183 发布时间:2018-03-22
分享 评论 0

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