我想这个应该适合你,源码好像是三恨写的#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=D:\autoit3\Aut2Exe\Icons\Fonts6.ico
#AutoIt3Wrapper_outfile=Kill_proc.exe
#AutoIt3Wrapper_Res_Comment=根据程序路径结束进程,可结束改名为 smss.exe 的非系统进程。
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#NoTrayIcon
;---------------------------------------------设置使用帮助信息
If $CmdLine[$CmdLine[0]] = "" then
Msgbox(4096,"帮助",'参数设置:文件路径必须是完整的' & @CRLF & @CRLF & "例 c:\windows\system32\smss.exe")
exit
endif
;--------------------------------检测是否存在这个文件,不是就自动退出
if Not FileExists($CmdLine[1]) then
MsgBox(4096, "错误!", "指定的程序不存在 ,程序将自动退出。")
exit
endif
ProcessClosePath($CmdLine[1]) ;程序主体就这一句,调用下面的函数
Func ProcessClosePath($Path)
;作用:根据程序路径结束进程
;返回:当WMI对象不存在,返回错误值1
Local $wbemFlagReturnImmediately
Local $wbemFlagForwardOnly
Local $strComputer,$objWMIService
Local $colItems,$objItem
$strComputer = "localhost"
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$Path= StringReplace($Path,"","\")
$objWMIService = ObjGet("winmgmts:\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Process Where ExecutablePath="'&$Path&'"', "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
$objItem.Terminate()
Next
Else
SetError(1)
Endif
EndFunc
|