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

[系统综合] 求个匹配某段关键字即执行预定的几个进程或……

 火.. [复制链接]
发表于 2011-12-30 00:36:27 | 显示全部楼层 |阅读模式
本帖最后由 凌菡 于 2011-12-30 00:38 编辑

新手入门,此程序急用,所以来求助于各位达人。需求是这样的:

电脑开机后,运行

c:\windows\system32\clsmm.exe /long

命令后,会在右下角弹出个框,这个框里会显示

会员卡号:123456789191248468(这个数字是18位的身份证号)

当在这个框里匹配这个18位的身份证号后,

则立即结束进程中的1.exe a.exe a34.exe进程,

如果没有这几个进程,就继续等待2分钟,在这2分钟内,如果有其中的某进程运行,就立即结束,如果以上几个进程全都匹配了,就立即完全退出,如果没有,不做提示

直到2分钟的时候,程序完全退出。

以上要求要怎么写?

另外一个:

当IE6的地址栏输入比如baidu.com敲回车后,

则立即结束进程中的1.exe a.exe a34.exe进程,

如果没有这几个进程,就继续等待2分钟,在这2分钟内,如果有其中的某进程运行,就立即结束,如果以上几个进程全都匹配了,就立即完全退出,如果没有,不做提示

直到2分钟的时候,程序完全退出。



这两个分别要怎么写呢?
发表于 2011-12-30 08:26:15 | 显示全部楼层
等待高手解答
 楼主| 发表于 2011-12-30 14:13:02 | 显示全部楼层
自己在恶补学习手册中,无奈,实在是还没达到自己所需要的水平,哪位前辈路过,帮个忙哈~
发表于 2011-12-30 19:01:29 | 显示全部楼层
要实现其实也挺简单的,弹出个框,这个框里会显示??把图片发上来,参考一下罗。
 楼主| 发表于 2011-12-31 00:07:28 | 显示全部楼层
嗯,好吧,我上传这个图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-12-31 05:22:53 | 显示全部楼层
电脑开机后,运行
c:\windows\system32\clsmm.exe /long
弹出个框
会员卡号:123456789191248468(这个数字是18位的身份证号)
如果卡号=18位
则立即结束进程1.exe a.exe a34.exe。
如果进程不存在,等待2分钟,在这2分钟内,如果有其中之一运行,就立即结束,如果以上几个进程全都出现过并结束了,程序退出,如果超时,程序退出。
我的理解是这样。不知是否如此?
发表于 2011-12-31 08:51:36 | 显示全部楼层
把你要开机运行的程序用AU3加到注册表开机启动
会员卡号你没说放在哪里要怎么读
那个判断倒是可以
$i=0
while $i<=120
      if processexit("1.exe") then processclose("1.exe") 
      if processexit("a.exe") then processclose("a.exe")
      if processexit("a34.exe") then processclose("a34.exe")
      sleep(1000)
wend
发表于 2011-12-31 10:11:43 | 显示全部楼层
回复 1# 凌菡
如果没有这几个进程,就继续等待2分钟,在这2分钟内,如果有其中的某进程运行,就立即结束(结束某进程吗?),如果以上几个进程全都匹配了(是不是那三个进程都出现过就算全都匹配了?),就立即完全退出(退出那个程序?Au3的程序吗?),如果没有,不做提示,直到2分钟的时候,程序完全退出(Au3的程序吗?)。
很多疑问,不清楚怎么弄啊,另外没有你的那个万象软件,不好判断会员号的18位
发表于 2011-12-31 10:39:20 | 显示全部楼层
本帖最后由 love5173 于 2011-12-31 10:45 编辑

后面的流程都好控制,就是前面的我不知道你匹配的什么,不好给代码
$a=0,$b=0,$c=0
$begin = TimerInit()
while TimerDiff($begin)<60*2*1000
if $a==1 and $b==1 and $c == 1 then exit 
      if processexit("1.exe") then 
        processclose("1.exe")
     $a=1
endif
      if processexit("a.exe") then 
     processclose("a.exe")
$b=1
endif
      if processexit("a34.exe") then 
processclose("a34.exe")
$c=1
sleep(500)
endif
$i+=1
wend
发表于 2011-12-31 12:59:45 | 显示全部楼层
嗯。后面那段有人发了,我说说我对前面框框的实现方法和思路:
首先WinGetText 返回窗口文本内容,然后使用StringMid ( "字符串", 起始位置 [, 数量] )
取出卡号。这一段如果会正则的话那就简单多了。StringRegExp ( "字符串", "表达式" [, 标志 ] [, 偏移量 ] ] )

可惜我不会正则,痛苦……
发表于 2012-1-1 10:34:42 | 显示全部楼层
莫非是除广告?
 楼主| 发表于 2012-1-1 13:53:53 | 显示全部楼层
不好意思,才刚上来,这个,其实,就是网吧里的万象客户端。
回复8楼的:

如果没有这几个进程,就继续等待2分钟,在这2分钟内,如果有其中的某进程运行,就立即结束(结束某进程吗?){我这句的意思是说,在这2分钟内,如果出现1.exe a.exe a34.exe这几个进程里的任意一个,比如,1.exe一出现在进程列表,就结束掉TA},如果以上几个进程全都匹配了(是不是那三个进程都出现过就算全都匹配了?){对,就是如果1.exe a.exe a34.exe这三个都出现了,且都给结束掉了},就立即完全退出(退出那个程序?Au3的程序吗?){就退出的意思是,AU3就用完了,内存里就不需要它驻留了,完全退出AU3,就跟开机没有加载TA一样},如果没有,不做提示,直到2分钟的时候,程序完全退出(Au3的程序吗?)。{对,依然是同前面一样,退出AU3。}
 楼主| 发表于 2012-1-1 13:57:00 | 显示全部楼层
回复6楼的,对,你的理解相当正确,我的意思就是这样的。

电脑开机后,运行
c:\windows\system32\clsmm.exe /long
弹出个框
会员卡号:123456789191248468(这个数字是18位的身份证号)
如果卡号=18位
则立即结束进程1.exe a.exe a34.exe。
如果进程不存在,等待2分钟,在这2分钟内,如果有其中之一运行,就立即结束,如果以上几个进程全都出现过并结束了,程序退出,如果超时,程序退出。
我的理解是这样。不知是否如此?
 楼主| 发表于 2012-1-1 14:01:46 | 显示全部楼层
把你要开机运行的程序用AU3加到注册表开机启动
会员卡号你没说放在哪里要怎么读
那个判断倒是可以


回复7楼,这个依我的理解,只能是在窗口弹出后,用匹配窗口关键字的形式,就是用

WinWaitActive("会员卡号:123456789191248468")

然后,再执行下一语句。

不知可行不?
发表于 2012-1-1 14:34:13 | 显示全部楼层
本帖最后由 半芯蕃茄 于 2012-1-1 14:36 编辑

WinWait("万象网管客户端","会员卡号:",120);超时为2分钟
你一定要获取会员卡号??还是你只想判断万象客户端窗口出现而已?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 13:46 , Processed in 0.081083 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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