82035935 发表于 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

hzxymkb 发表于 2011-6-5 00:45:47

while 1
      If Not ProcessExists("taskmgr.exe") Then Exit
Wend

82035935 发表于 2011-6-5 01:05:25

这行代码是加在哪里呢?我加在最后面还是不行的

sunafter 发表于 2011-6-5 02:02:51

做人要灵活,不能硬套代码,我刚开始时候也遇到过类似的问题,后来自己分析出原因了

dyd 发表于 2011-6-5 09:29:35

要加个循环才行

82035935 发表于 2011-6-5 10:54:27

如果加上while 1...Wend 只能执行一个循环,另外一个执行不了,这是怎么回事,不能执行多个while 1...Wend 么

palkiller 发表于 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
WendLZ的代码里头压根就看不到调用过函数啊,试下这样行不行...

tryhi 发表于 2011-6-5 12:41:58

这行代码是加在哪里呢?我加在最后面还是不行的
82035935 发表于 2011-6-5 01:05 http://www.autoitx.com/images/common/back.gif


    你把中间那行加在中间

82035935 发表于 2011-6-5 13:01:47

回复 7# palkiller

谢谢啊,进程是可以结束了 不过检测窗口的时候只能检测一次,只能发送一次Enter 我需要是无限循环检测窗口‘有木有’ 如果有就发送enter 命令,所以这个也只能执行一个循环啊,不能执行2个循环啊

palkiller 发表于 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
         IfWinActive("有木有")<>0 then Send("{Enter}")
         WinWaitActive("有木有", "", 20)      
Wend这样好了,循环体先判断进程是否存在,不存在则退出脚本,然后判断"有木有"窗口是否已激活,激活的话发送一次回车,然后等待"有木有"窗口出现并是活动状态,最多等待20秒,进入下一次循环。

82035935 发表于 2011-6-5 14:07:25

回复 10# palkiller

太感谢了,已经成功了,谢谢了 {:face (55):}

hifi 发表于 2011-6-6 08:25:31

學習了~{:face (356):}

infotechewen 发表于 2011-6-7 15:32:33

如果真的有2个或多个循环的,要怎么办呢?
页: [1]
查看完整版本: 怎么检测指定进程,如果不存在则自动退出脚本