找回密码
 加入
搜索
查看: 8725|回复: 12

[AU3基础] 怎么检测指定进程,如果不存在则自动退出脚本

 火.. [复制链接]
发表于 2011-6-5 00:24:02 | 显示全部楼层 |阅读模式
本帖最后由 82035935 于 2011-6-5 00:25 编辑

下面是代码,前面的都可以正常执行,就是最后关闭程序的时候,脚本始终不自动退出,需要强制结束,怎么把代码加进去才能实现检测到进程不存在了就自动退出脚本?
#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=C:\WINDOWS\system32\SHELL32.dll|-13
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****

$g_szVersion = "自动启动"
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)

Run("灰色按钮.exe","",@SW_MINIMIZE)

Run("神仙泡泡龙.exe")

WinwaitActive("提示")

WinSetState("提示","",@SW_HIDE)

while 1
        
WinwaitActive("有木有")
        
Send("{Enter}")

Wend

Func Chkexe()

        If Not ProcessExists("神仙泡泡龙.exe") Then Exit

EndFunc   ;==>Chkexe
发表于 2011-6-5 00:45:47 | 显示全部楼层
while 1
        If Not ProcessExists("taskmgr.exe") Then Exit
Wend

评分

参与人数 1金钱 +20 收起 理由
tryhi + 20 不错

查看全部评分

 楼主| 发表于 2011-6-5 01:05:25 | 显示全部楼层
这行代码是加在哪里呢?我加在最后面还是不行的
发表于 2011-6-5 02:02:51 | 显示全部楼层
做人要灵活,不能硬套代码,我刚开始时候也遇到过类似的问题,后来自己分析出原因了
发表于 2011-6-5 09:29:35 | 显示全部楼层
要加个循环才行
 楼主| 发表于 2011-6-5 10:54:27 | 显示全部楼层
如果加上while 1...Wend 只能执行一个循环,另外一个执行不了,这是怎么回事,不能执行多个while 1...Wend 么
发表于 2011-6-5 11:54:03 | 显示全部楼层
#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=C:\WINDOWS\system32\SHELL32.dll|-13
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****

$g_szVersion = "自动启动"
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)

Run("灰色按钮.exe","",@SW_MINIMIZE)
Run("神仙泡泡龙.exe")
WinwaitActive("提示")
WinSetState("提示","",@SW_HIDE)
WinwaitActive("有木有")
Send("{Enter}")
while 1
        If Not ProcessExists("神仙泡泡龙.exe") Then Exit
Wend
LZ的代码里头压根就看不到调用过函数啊,试下这样行不行...
发表于 2011-6-5 12:41:58 | 显示全部楼层
这行代码是加在哪里呢?我加在最后面还是不行的
82035935 发表于 2011-6-5 01:05



    你把中间那行加在中间
 楼主| 发表于 2011-6-5 13:01:47 | 显示全部楼层
回复 7# palkiller

谢谢啊,进程是可以结束了 不过检测窗口的时候只能检测一次,只能发送一次Enter 我需要是无限循环检测窗口‘有木有’ 如果有就发送enter 命令,所以这个也只能执行一个循环啊,不能执行2个循环啊
发表于 2011-6-5 13:27:25 | 显示全部楼层
可以有两个循环,不过你的代码完全没必要...
#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=C:\WINDOWS\system32\SHELL32.dll|-13
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****

$g_szVersion = "自动启动"
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)

Run("灰色按钮.exe","",@SW_MINIMIZE)
Run("神仙泡泡龙.exe")
WinwaitActive("提示")
WinSetState("提示","",@SW_HIDE)
while 1
         If Not ProcessExists("神仙泡泡龙.exe") Then Exit
         If  WinActive("有木有")<>0 then Send("{Enter}") 
         WinWaitActive("有木有", "", 20)        
Wend
这样好了,循环体先判断进程是否存在,不存在则退出脚本,然后判断"有木有"窗口是否已激活,激活的话发送一次回车,然后等待"有木有"窗口出现并是活动状态,最多等待20秒,进入下一次循环。
 楼主| 发表于 2011-6-5 14:07:25 | 显示全部楼层
回复 10# palkiller

太感谢了,已经成功了,谢谢了
发表于 2011-6-6 08:25:31 | 显示全部楼层
學習了~  
发表于 2011-6-7 15:32:33 | 显示全部楼层
如果真的有2个或多个循环的,要怎么办呢?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 05:41 , Processed in 0.085092 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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