找回密码  加入

AUTOIT CN

搜索
查看: 3475|回复: 5

[系统综合] [已解决]排除系统进程将其关闭

[复制链接]
发表于 2013-7-18 14:43:26 | 显示全部楼层 |阅读模式
本帖最后由 qq1244521 于 2013-7-24 20:33 编辑
  1. Dim $Process=0
  2. Local $list = ProcessList()

  3. For $i = 1 To $list[0][0]
  4.        
  5.                 If $list[$i][0] =  "[System Process]"  Then ;对比进程是否一样
  6.                         $Process=1
  7.                 EndIf
  8.                 If $list[$i][0] =  "System"  Then ;对比进程是否一样
  9.                         $Process=1
  10.                 EndIf
  11.                 If $list[$i][0] =  "smss.exe"  Then ;对比进程是否一样
  12.                         $Process=1
  13.                 EndIf
  14.                 If $list[$i][0] =  "csrss.exe"  Then ;对比进程是否一样
  15.                         $Process=1
  16.                 EndIf
  17.                 If $list[$i][0] =  "winlogon.exe"  Then ;对比进程是否一样
  18.                         $Process=1
  19.                 EndIf
  20.                 If $list[$i][0] =  "services.exe"  Then ;对比进程是否一样
  21.                         $Process=1
  22.                 EndIf
  23.                 If $list[$i][0] =  "lsass.exe"  Then ;对比进程是否一样
  24.                         $Process=1
  25.                 EndIf
  26.                 If $list[$i][0] =  "svchost.exe"  Then ;对比进程是否一样
  27.                         $Process=1
  28.                 EndIf
  29.                 If $list[$i][0] =  "explorer.exe"  Then ;对比进程是否一样
  30.                         $Process=1
  31.                 EndIf
  32.                 If $list[$i][0] =  "internat.exe"  Then ;对比进程是否一样
  33.                         $Process=1
  34.                 EndIf
  35.                
  36.                 If $Process=0  Then
  37.                         ProcessExists( $list[$i][0] ) ;结束进程
  38.                         MsgBox(0, "", $list[$i][0])
  39.                         $Process=0
  40.                
  41.                 EndIf               
  42. Next
复制代码
我弄了个 关闭不是WINXP系统进程 运行后没有反映 帮忙看看是哪块有问题
发表于 2013-7-18 15:23:32 | 显示全部楼层
缺一句 $Process=0

什么位置 自己思考
发表于 2013-7-18 21:11:07 | 显示全部楼层
回复 1# qq1244521
你的代码应该把 $Process = 0  放在循环里的首行.
但可以考虑另一种判断方法,让代码更简洁点, 我曾经这么试过的:
  1. Local $Pid_Sys = "[System Process]|System|smss.exe|csrss.exe|" &  _
  2.                   "winlogon.exe|services.exe|lsass.exe|svchost.exe|explorer.exe|internat.exe|"
  3. Local $list = ProcessList()
  4. If @error Then
  5.         MsgBox(16, 'err', 'fail to get process list!')
  6.         Exit
  7. Else
  8.         For $i = 1 To $list[0][0]
  9.                 If StringInStr($Pid_Sys, $list[$i][0] & '|') Then ContinueLoop
  10.                 ProcessClose($list[$i][0]) ;结束进程
  11.                 If @error Then
  12.                         MsgBox(16, $list[$i][0], '关闭进程失败,错误码: ' & @error)
  13.                 Else
  14.                         MsgBox(64, $list[$i][0], '已成功关闭此进程.')
  15.                 EndIf
  16.         Next
  17. EndIf
复制代码

评分

参与人数 1金钱 +30 收起 理由
fangbaiyu + 30 学习了.谢谢! 看来思路,结构很重要.

查看全部评分

 楼主| 发表于 2013-7-21 15:46:20 | 显示全部楼层
2# 3#  谢谢了 我去研究下
 楼主| 发表于 2013-7-24 20:32:59 | 显示全部楼层
3楼 正解 代码比我的简洁多了
发表于 2013-7-24 21:00:58 | 显示全部楼层
谢谢3楼的代码,非常不错
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2021-9-23 11:19 , Processed in 0.229477 second(s), 35 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表