如何根据进程的句柄数多少来结束进程
高手指点,例如我开了20个QQ,其中有几个已经卡机了,句柄数只有200多了,正常是1000,我就把这句柄数只有200多的qq进程给结束了,谢谢大神指点 回复 1# cxq7668$kill = "QQ.exe"
Dim $Processlist = ProcessList()
For $i = 1 To $Processlist
If StringInStr($kill, $Processlist[$i]) > 0 AND $Processlist[$i] < 200 Then ProcessClose($Processlist[$i])
Next
回复 2# mars0916
多谢大神,我试试去 回复 2# mars0916
大神这个 ProcessList()这个函数获取不到进程的句柄数啊,只有pid值啊 回复 4# cxq7668
底下有個例子 你研究看看
不知道是不是你要的
https://www.autoitscript.com/wiki/FAQ#How_can_I_get_a_window_handle_when_all_I_have_is_a_PID.3F 回复 4# cxq7668
終於知道句柄數是啥了
轉貼的
請自行加判斷
$arProc = ProcessList("QQ.exe")
For $i = 1 to $arProc
$arStat = ProcessGetStats($arProc[$i], 0)
If IsArray($arStat) Then
ConsoleWrite("Process Name: " & $arProc[$i] & " - Handle: " & StringReplace(_ProcessGetHandle($arProc[$i]), @LF, " - ") & @CRLF)
EndIf
Next
Func _ProcessGetHandle($ioProcName)
If $ioProcName Then
Local $sStatus = Run(@ComSpec & " /c WMIC PROCESS WHERE Name='" & $ioProcName & "' GET handlecount", @SystemDir, @SW_HIDE, 8)
Local $sBuf
While 1
$sBuf &= StdoutRead($sStatus)
If @Error then ExitLoop ; We have lift off, let's move on!
WEnd
$sBuf = StringStripCR($sBuf)
$sBuf = StringRegExpReplace($sBuf, "HandleCount", "")
$sBuf = StringStripWS($sBuf, 3)
If StringInStr($sBuf, "No Instance(s) Available.") Then
; Just incase we enter a bad process name
SetError(2)
Return 0
EndIf
Return $sBuf
Else
SetError(1)
Return 0
EndIf
EndFunc
回复 6# mars0916
好的,我研究一下
谢谢
页:
[1]