找回密码
 加入
搜索
查看: 3778|回复: 13

如何终止脚本执行但不退出窗口

  [复制链接]
发表于 2009-1-3 10:23:08 | 显示全部楼层 |阅读模式
用脚本创建了一个窗体上面有两个按钮一个是运行按钮一个是停止按钮,按运行按钮执行一段代码,按停止按钮,停止执行运行按钮的代码返回窗体,但不退出窗体
发表于 2009-1-3 10:37:59 | 显示全部楼层
到资料区那看一下,有好多这样的例子
 楼主| 发表于 2009-1-3 11:01:38 | 显示全部楼层
没有找到啊帮帮忙
发表于 2009-1-3 12:29:02 | 显示全部楼层
停止的代码如下应该可以做到

Global $Paused

Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('脚本已被“暂停”',0,0)
    WEnd
    ToolTip("")
EndFunc
 楼主| 发表于 2009-1-4 08:31:58 | 显示全部楼层
我是想退出上面的循环,但循环太快,不接受我的按键信息
发表于 2009-1-4 09:40:35 | 显示全部楼层
请使用事件模式
发表于 2009-12-6 10:03:07 | 显示全部楼层
这个是Autoit的设计问题,基本没有有效地解决办法。
发表于 2009-12-6 11:13:02 | 显示全部楼层
帮顶
发表于 2009-12-6 23:46:08 | 显示全部楼层
建议你把代码发上来看看
有些函数在执行的时候是无法停止的
发表于 2009-12-31 05:09:05 | 显示全部楼层
本帖最后由 netegg 于 2009-12-31 05:13 编辑

udf区挂起进程
http://www.autoitx.com/forum.php ... &extra=page%3D3
发表于 2009-12-31 18:41:50 | 显示全部楼层
我一般使用事件模式,设置一个变量当标志,标志=0,就停止,=1就运行。。
而且尽可能的把你的那个循环分成很多很短小的步骤,每个步骤都尽量去验证一下那个标志变量,这样就不会因为循环太长而无法及时停止。。。。。

给个例子好了

HotKeySet("{esc}", "x")
$key = 1
a()
Func a()
        Sleep(10)
        For $i = 1 To 1000
                If $key = 1 Then
                        ttt($i)
                        Sleep(30)
                Else
                        ExitLoop
                EndIf
        Next
                a()
EndFunc   ;==>a
Func ttt($ttt, $widthy = 0);显示提示工具条,不想每次都数一大堆字符,节省au3文件大小
        If $widthy = 0 Then $widthy = @DesktopWidth / 3
        SplashTextOn("调试过程", $ttt, $widthy, @DesktopHeight / 20, -1, -1, 33, "", @DesktopHeight / 60)
EndFunc   ;==>ttt
Func x()
        $key = Abs($key - 1)
        ttt("暂停中")
EndFunc   ;==>x


这个例子按esc暂停后,再按esc会从头开始数数。。。。


下面给个接着数数的例子:

HotKeySet("{esc}", "x")
$key = 1
$i = 1
a()
Func a()
        Sleep(10)
        If $key = 1 Then
                $i = $i+1
                        ttt($i)
                        Sleep(30)
        EndIf
                a()
EndFunc   ;==>a
Func ttt($ttt, $widthy = 0);显示提示工具条,不想每次都数一大堆字符,节省au3文件大小
        If $widthy = 0 Then $widthy = @DesktopWidth / 3
        SplashTextOn("调试过程", $ttt, $widthy, @DesktopHeight / 20, -1, -1, 33, "", @DesktopHeight / 60)
EndFunc   ;==>ttt
Func x()
        $key = Abs($key - 1)
        ttt("暂停中:"&$i)
EndFunc   ;==>x

评分

参与人数 1金钱 +20 贡献 +2 收起 理由
afan + 20 + 2

查看全部评分

发表于 2010-1-1 17:17:33 | 显示全部楼层
事件模式应该可以解决的!
发表于 2010-1-29 19:46:34 | 显示全部楼层
路过  看看
发表于 2010-1-29 23:12:19 | 显示全部楼层
EVENT模式,再利用while 变量的方式可解,楼主可在论坛搜一下。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-29 17:41 , Processed in 0.082332 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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