|
楼主 |
发表于 2015-5-19 09:38:00
|
显示全部楼层
本帖最后由 a000000 于 2015-5-19 09:40 编辑
回复 3# ila
经过修改成这样,可是不知道为什么只能杀灭并删除第一个进程,然后后边的那几个都不管用
[proc]
0.exe=BT下载工具
1.exe=BT下载工具
只对0.exe管用,后面的1.exe没杀灭也没删除,帮忙看看错了哪里
Dim $i=1,$path="0.ini"
If Not FileExists($path) Then
MsgBox(16,0,"无法加载进程list文件")
else
While 1
$read=IniRead($path,"process",$i,"error")
If $read="" or $read="error" Then ExitLoop
;条件符合,接下来的进行其他操作
$i+=1
MsgBox(0,"",$read)
$list = ProcessList() ;获得所有进
$inStrProcessName = $read ;引号内为进程名所包含的特定字符串
MsgBox(0,"2",$inStrProcessName)
for $i = 1 to $list[0][0] ;遍历进程
If StringInStr($list[$i][0],$inStrProcessName) Then
$ProcessPath = Processpath($list[$i][1]) ;获取将关闭进程的储存路径
ProcessClose($list[$i][0]) ;如果进程名中包含QvodUpdate5就关闭该进程。
Sleep(1000) ;等待进程关闭
If $ProcessPath <> "" Then FileDelete($ProcessPath) ;删除进程源文件,慎用哈!
MsgBox(0,"8",$inStrProcessName);不知道为什么这个地方不显示啊
Endif
Next
WEnd
EndIf
Func Processpath($iPID)
Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $iPID)
If $aProc[0] = 0 Then Return SetError(1, 0, '')
Local $vStruct = DllStructCreate('int[1024]')
DllCall('psapi.dll', 'int', 'EnumProcessModules', 'hwnd', $aProc[0], 'ptr', DllStructGetPtr($vStruct), 'int', DllStructGetSize($vStruct), 'int_ptr', 0)
Local $aReturn = DllCall('psapi.dll', 'int', 'GetModuleFileNameEx', 'hwnd', $aProc[0], 'int', DllStructGetData($vStruct, 1), 'str', '', 'int', 2048)
If StringLen($aReturn[3]) = 0 Then Return SetError(2, 0, '')
Return $aReturn[3]
EndFunc |
|