找回密码
 加入
搜索
查看: 8927|回复: 19

[系统综合] 循环监控一个进程,此进程出现即结束,要怎么写?

 火.. [复制链接]
发表于 2012-4-19 20:36:59 | 显示全部楼层 |阅读模式
我知道,结束多个进程如下:
Dim $sProcesses = "1.exe|2.exe|3.exe|4.exe|"
$aProcess = ProcessList()
For $i = 1 To $aProcess[0][0]
       If StringInStr($sProcesses, $aProcess[$i][0] & "|") Then ProcessClose($aProcess[$i][1])
Next
可是,我如何让这段代码常驻内存,恒久监控这几个进程,只要此几个进程出现就立马结束掉,然后,继续监控。

实际情况是,如上的1.exe,2.exe,3.exe,4.exe均为广告进程,结束掉了

过会儿,又出来了,麻烦,能用AU3写个程序一直常驻内存监控他们吗?

只要他们出现,就结束掉。

达人帮帮忙哈~
发表于 2012-4-19 21:10:52 | 显示全部楼层
本帖最后由 半芯竹 于 2012-4-19 21:34 编辑

这个其实看看帮助就懂了,你难道还是想做下伸手党吗?
先定义进程,然后再使用循环,while 然后,再使用IF来判断是否存在进程……

Local $a[4]=['0.exe','1.exe','2.exe','3.exe']
While 1
For $i=0 To 3 
If ProcessExists($a[$i]) Then ProcessClose($a[$i])
Next
Sleep(500)
WEnd
发表于 2012-4-19 21:43:10 | 显示全部楼层
回复 1# 凌菡
加入死循环不就行了吗?
While 1
...
...
sleep(100)  ;减轻CPU的负担
Wend
 楼主| 发表于 2012-4-19 21:51:10 | 显示全部楼层
这是我自己写的:
While 1
        
        Dim $sProcesses = "NAnalyser.exe|2.exe|3.exe|4.exe|"
                $aProcess = ProcessList()
                Sleep(10)
                For $i = 1 To $aProcess[0][0]
        If StringInStr($sProcesses, $aProcess[$i][0] & "|") Then ProcessClose($aProcess[$i][1])
Next        
WEnd
我用了后,发现鼠标一直是双箭头在闪,包括2楼大大给的也一样

鼠标一直双箭头在闪,这个能解决闪的问题吗?
发表于 2012-4-19 22:23:53 | 显示全部楼层
回复 4# 凌菡
运行无此现象,win7环境下.
发表于 2012-4-19 22:46:26 | 显示全部楼层
这是我自己写的:我用了后,发现鼠标一直是双箭头在闪,包括2楼大大给的也一样

鼠标一直双箭头在闪,这个 ...
凌菡 发表于 2012-4-19 21:51

我试了没问题哦。是不是你要结束的进程不停地启动啊?
根据2#的代码稍加点东西,如下:
Opt('TrayMenuMode',1)  
HotKeySet('{ESC}','_Exit')
Local $ExitItem  = TrayCreateItem('退出 (ESC)')

Local $a[4]=['0.exe','1.exe','2.exe','3.exe']
While 1
For $i=0 To 3 
If ProcessExists($a[$i]) Then ProcessClose($a[$i])
Next
Sleep(500)
WEnd

While 1
        Local $TrayMsg =TrayGetMsg()
        Switch $TrayMsg
                Case $ExitItem
                        _Exit()
        EndSwitch
Wend

Func _Exit() ;退出
        TrayTip('退出','已退出...',1)
        Sleep(1000)
        Exit
EndFunc ;==>_Exit
发表于 2012-4-20 09:22:09 | 显示全部楼层
回复 6# 地平线


    老兄,你后面那个WHILE用来做什么的?貌似多此一举了。
发表于 2012-4-20 10:25:23 | 显示全部楼层
感觉有点治标不治本...只是从解决问题的审美观来说是不漂亮的..我个人觉得这样研究还不如稍微研究深一点,找出广告弹出的原因.

举一个自己的例子:每次使用搜狗输入法的时候都会有弹窗,你把弹窗进程杀掉或者广告文件删除都没用,具体方法可以google.当然,我只是在这里说一种思路,也许lz那边环境不同..
发表于 2012-4-20 11:13:17 | 显示全部楼层
本帖最后由 xms77 于 2012-4-20 14:54 编辑

回复 6# 地平线
两个不是嵌套死循环,也没有跳出循环的语句,怎么切换啊,狼兄?
发表于 2012-4-20 12:36:23 | 显示全部楼层
回复 7# 半芯竹
回复 9# xms77
请见谅,本人学的不是很深入,在循环方面还搞不清楚。请各位指点!
发表于 2012-4-20 15:47:27 | 显示全部楼层
可以使用ProcessWait
暂停脚本的执行直至给定进程出现为止.
ProcessWait ( "进程名" [, 超时时间] )
参数
进程名 目标进程的名称.  
超时时间 [可选参数] 指定要等待的时间长度(默认为一直等待).  
返回值
成功: 返回 进程PID.
失败: 返回 0,已超时.  
注意/说明
进程名是指可执行文件的名称(无需给出完整路径),例如:"notepad.exe" 或 "winword.exe"
每隔 250 毫秒左右进程将被检测一次.
本函数是唯一一个不接受PID作为参数的进程函数,这是因为 PID 是随机分配的,等待一个特定的 PID 出现并没有任何意义.
发表于 2012-4-20 18:50:01 | 显示全部楼层
这样还不如用组策略-用户配置-系统,不要运行指定的windows程序
发表于 2012-4-20 23:43:20 | 显示全部楼层
禁止运行不就OK拉,晕
发表于 2012-4-21 00:04:42 | 显示全部楼层
本帖最后由 Qokelate 于 2012-4-21 00:24 编辑

循环结束进程不是一个好办法

也许IFEO可以帮你
给你个例子,禁止用户发起SMSS.exe进程,导入注册表即可

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\smss.exe]
"Debugger"="ntsd -d"
"GlobalFlag"="0x000010F0"
发表于 2012-4-21 00:30:58 | 显示全部楼层
IFEO劫持
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-18 16:16 , Processed in 0.083637 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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