自行测试: | Main | | Sub Main() | | Dim fso, CurDir | | Set fso = CreateObject("Scripting.Filesystemobject") | | CurDir = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName,"\")) | | | | | | If RuningCount("cmd.exe", "") > 0 Then | | | | | | WScript.Sleep 18 * 1000 | | | | | | If Not fso.FileExists(CurDir & "LOG.TXT") Then | | | | | | Call CloseProcess("cmd.exe", "") | | | | | | MsgBox "程序遇到未知问题即将关闭,请重新运行本程序", 48, "友情提示" | | | | End If | | | | End If | | | | | | fso.DeleteFile WScript.ScriptFullName, True | | | | End Sub | | | | | | | | | | | | Function RuningCount(ByVal sAppName, ByVal sAppPath) | | On Error Resume Next | | Dim objItem, i: i = 0 | | For Each objItem In GetObject("winmgmts:\\.\root\cimv2:win32_process").instances_ | | If LCase(objItem.Name) = LCase(sAppName) Then | | If sAppPath = "" Or InStr(1,objItem.CommandLine,sAppPath,vbTextCompare) Then i = i + 1 | | End If | | Next | | RuningCount = i | | End Function | | | | | | | | | | | | | | Sub CloseProcess(ByVal sAppName, ByVal sAppPath) | | On Error Resume Next | | Dim objItem | | For Each objItem In GetObject("winmgmts:\\.\root\cimv2:win32_process").instances_ | | If LCase(objItem.Name) = LCase(sAppName) Then | | If sAppPath = "" Or InStr(1, objItem.CommandLine, sAppPath, vbTextCompare) Then objItem.Terminate | | End If | | Next | | End SubCOPY |
|