凌菡 发表于 2012-4-19 20:36:59

循环监控一个进程,此进程出现即结束,要怎么写?

我知道,结束多个进程如下:Dim $sProcesses = "1.exe|2.exe|3.exe|4.exe|"
$aProcess = ProcessList()
For $i = 1 To $aProcess
       If StringInStr($sProcesses, $aProcess[$i] & "|") Then ProcessClose($aProcess[$i])
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=['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

xms77 发表于 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
      If StringInStr($sProcesses, $aProcess[$i] & "|") Then ProcessClose($aProcess[$i])
Next       
WEnd我用了后,发现鼠标一直是双箭头在闪,包括2楼大大给的也一样

鼠标一直双箭头在闪,这个能解决闪的问题吗?

xms77 发表于 2012-4-19 22:23:53

回复 4# 凌菡
运行无此现象,win7环境下.

地平线 发表于 2012-4-19 22:46:26

这是我自己写的:我用了后,发现鼠标一直是双箭头在闪,包括2楼大大给的也一样

鼠标一直双箭头在闪,这个 ...
凌菡 发表于 2012-4-19 21:51 http://www.autoitx.com/images/common/back.gif
我试了没问题哦。是不是你要结束的进程不停地启动啊?
根据2#的代码稍加点东西,如下:
Opt('TrayMenuMode',1)
HotKeySet('{ESC}','_Exit')
Local $ExitItem= TrayCreateItem('退出 (ESC)')

Local $a=['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用来做什么的?貌似多此一举了。

blankboy 发表于 2012-4-20 10:25:23

感觉有点治标不治本...只是从解决问题的审美观来说是不漂亮的..我个人觉得这样研究还不如稍微研究深一点,找出广告弹出的原因.

举一个自己的例子:每次使用搜狗输入法的时候都会有弹窗,你把弹窗进程杀掉或者广告文件删除都没用,具体方法可以google.当然,我只是在这里说一种思路,也许lz那边环境不同..

xms77 发表于 2012-4-20 11:13:17

本帖最后由 xms77 于 2012-4-20 14:54 编辑

回复 6# 地平线
两个不是嵌套死循环,也没有跳出循环的语句,怎么切换啊,狼兄?

地平线 发表于 2012-4-20 12:36:23

回复 7# 半芯竹
回复 9# xms77
请见谅,本人学的不是很深入,在循环方面还搞不清楚。请各位指点!

netkeeper 发表于 2012-4-20 15:47:27

可以使用ProcessWait
暂停脚本的执行直至给定进程出现为止.
ProcessWait ( "进程名" [, 超时时间] )
参数
进程名 目标进程的名称.
超时时间 [可选参数] 指定要等待的时间长度(默认为一直等待).
返回值
成功: 返回 进程PID.
失败: 返回 0,已超时.
注意/说明
进程名是指可执行文件的名称(无需给出完整路径),例如:"notepad.exe" 或 "winword.exe"
每隔 250 毫秒左右进程将被检测一次.
本函数是唯一一个不接受PID作为参数的进程函数,这是因为 PID 是随机分配的,等待一个特定的 PID 出现并没有任何意义.

1007236046 发表于 2012-4-20 18:50:01

这样还不如用组策略-用户配置-系统,不要运行指定的windows程序

qq82015930 发表于 2012-4-20 23:43:20

禁止运行不就OK拉,晕{:face (382):}

Qokelate 发表于 2012-4-21 00:04:42

本帖最后由 Qokelate 于 2012-4-21 00:24 编辑

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

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


"Debugger"="ntsd -d"
"GlobalFlag"="0x000010F0"

pighead456 发表于 2012-4-21 00:30:58

IFEO劫持{:face (114):}
页: [1] 2
查看完整版本: 循环监控一个进程,此进程出现即结束,要怎么写?