au3本身没有函数结束进程树吗只能调用taskkill吗?[已解决]
本帖最后由 today2004 于 2010-8-15 00:50 编辑如题,au3本身没有函数结束进程树吗只能调用taskkill吗? 你自己写个函数不就行了? 哈哈 属于菜鸟级别的 不会这么高深的东西 楼上的可否写个例子啊 思路:取进程的父进程ID,如果非系统,则结束之.但如果要从子进程结束树上层就没那么好办了,因为获取子进程好像没有好的方法,也没见过有这个API,但变通一下思路还是可以的,最后还是要从父进程从手.
btw:2#就写过一个获取父进程的获取 既然获取父进程已经有了实现代码,那枚举子进程不也是一样的吗? - -||| ProcessExists ( "进程" ) 可以获取指定进程的PID 但是怎么枚举他的子进程了 _WinAPI_EnumChildProcess #include <Thread.au3>
$iTopNode = ProcessExists("cmd.exe")
_TerminateProcessTree($iTopNode)
Func _TerminateProcessTree($iTopNodePid, $iReserved = 0)
If Not ProcessExists($iTopNodePid) Then Return 0
If ($iReserved) Then
Local $aProcess = Eval($iReserved & $iTopNodePid)
If ($aProcess) Then
$aProcess = StringSplit($aProcess, ",")
For $i = 1 To $aProcess - 1
_TerminateProcessTree($aProcess[$i], $iReserved)
Next
EndIf
Return ProcessClose($iTopNodePid)
Else
Local $pBuffer, $pBuffer1, $iSizeofBuffer
Local $iOffset, $iPid, $iParentId, $sRandom
_RTQuerySystemInformation(5, 0, 0)
$iSizeofBuffer = @Extended
$pBuffer = _RTHeapAlloc(@Extended)
_RTQuerySystemInformation(5, $pBuffer, $iSizeofBuffer)
$pBuffer1 = $pBuffer
$sRandom = Random(10000, 10000000) & Random(10000, 10000000) & ","
While 1
$iOffset = _RTReadBytes($pBuffer)
$iPid = _RTReadBytes($pBuffer + 68)
$iParentId = _RTReadBytes($pBuffer + 72)
Assign($sRandom & $iParentId, Eval($sRandom & $iParentId) & $iPid & ",", 2)
If ($iOffset) Then
$pBuffer += $iOffset
Else
ExitLoop
EndIf
WEnd
_RTHeapFree($pBuffer1)
Return _TerminateProcessTree($iTopNodePid, $sRandom)
EndIf
EndFunc ;==>_TerminateProcessTree 感谢 我试试 呵呵,学习一下。。 回复 1# today2004
请问楼Z。问题怎么解决的。把代码放出来大家分享一下啊。 回复 1# today2004
怎么解决进程树的问题的啊?
页:
[1]