今天翻墙出外面看新闻,期间浏览器出了点问题,疯狂弹出几十个窗口,系统资源几乎被耗尽,于是突然想写个批量关闭同名进程的想法,使用了processclose()函数,发现它不会设置@error(一直都是0,和帮助文档中的描述不一致,不知道我的代码哪里出问题了~~)----------返回值是和文档说明一致的--------
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("快速全部关闭同名进程 V1.0", 276, 58, 192, 124, Default, $ws_ex_topmost)
$Input1 = GUICtrlCreateInput("", 136, 1, 129, 24)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$Label1 = GUICtrlCreateLabel("请输入要关闭的进程名:", 8, 8, 127, 17)
$Button1 = GUICtrlCreateButton("确定(enter)", 72, 32, 113, 25, 0x1)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$pro_name=GUICtrlRead($Input1)
If $pro_name='' Then
MsgBox(0, '错误!', '进程名不能为空!', 3)
ElseIf Not ProcessExists($pro_name) Then
MsgBox(0, '警告!', '您输入的进程名不存在,请检查!', 3)
Else
Do
Sleep(1)
MsgBox(0,0,ProcessClose($pro_name)&@CRLF&@error)
Until @error<>0
MsgBox(0, '好了!', '指定名称的进程已全部被关闭!!', 3)
GUICtrlSetData($Input1,'')
EndIf
EndSwitch
WEnd
函数参考
--------------------------------------------------------------------------------
ProcessClose
终止某个进程.
ProcessClose ( "进程")
参数
进程 要终止的进程的名称或 PID(进程标识符).
返回值
成功: 返回 1.
失败: 返回 0 并设置 @error 到:
1 = 打开进程失败
2 = AdjustTokenPrivileges 失败
3 = 终止进程失败
4 = 不能验证进程是否存在 |