找回密码
 加入
搜索
查看: 6517|回复: 15

[系统综合] 俩个循环怎么同时进行[已解决]

 火.. [复制链接]
发表于 2011-8-31 23:21:33 | 显示全部楼层 |阅读模式
本帖最后由 thebest 于 2011-9-2 09:14 编辑
Func Go()
        
        While 1
        $coord  = PixelSearch ( 896, 99,962, 156, 0x3B6C02 )
        If Not @error Then
                MouseMove($coord[0],$coord[1])
        Else
            MouseMove(968,222)
                Sleep(10000)
        EndIf
        WEnd
EndFunc
上面代码中在Sleep(10000)的时候,如果If Not @error 成立怎么能立即停止延迟执行MouseMove($coord[0],$coord[1])操作,打到两个循环各自执行?
发表于 2011-9-1 00:25:42 | 显示全部楼层
两个循环同时貌似需要多线程哟!
 楼主| 发表于 2011-9-1 00:51:25 | 显示全部楼层
怎么个多线程法,来个代码
 楼主| 发表于 2011-9-1 08:58:45 | 显示全部楼层
来个高手帮帮忙
发表于 2011-9-1 09:56:35 | 显示全部楼层
AU3不支持多线程
 楼主| 发表于 2011-9-1 10:14:26 | 显示全部楼层
有米有别的其他办法达到我想要的效果
发表于 2011-9-1 10:15:19 | 显示全部楼层
其实我不太明白lz想要表达的意思,因为在Sleep(10000)的时候,你那整个脚本都是停止的,何来“如果If Not @error 成立”一说,而且“如果If Not @error 成立”的话,又怎么会跑到Sleep(10000)上去?另外au3本身不支持多线程,所以只能用AdlibRegister来模拟了,效果很难说,有好有坏吧
PS:据论坛的大大说,au3可以通过调用系统DLL来实现多线程,好像以前看到过帖子,不过忘记了。。
 楼主| 发表于 2011-9-1 11:03:42 | 显示全部楼层
回复 7# 飘云


   Sleep(10000)的时候,如果If Not @error 成立怎么能立即停止延迟执行MouseMove($coord[0],$coord[1])操作
是不是无法实现呢
发表于 2011-9-1 11:09:49 | 显示全部楼层
另一个循环使用定时器吧,au3实现多线程,不简单哦,要么问问版主....
发表于 2011-9-1 11:14:54 | 显示全部楼层
如7L,sleep的时候,脚本是暂停的。不会去执行PixelSearch,就更不会去监听 If Not @error  是否成立了。
发表于 2011-9-1 11:21:51 | 显示全部楼层
sleep 程序睡眠了,不做任何动作。
 楼主| 发表于 2011-9-1 11:29:21 | 显示全部楼层
可不可以用runwait ?
发表于 2011-9-1 16:21:48 | 显示全部楼层
坐等高手回复
发表于 2011-9-1 22:39:51 | 显示全部楼层
9楼说了,用定时器
_Timer_SetTimer
发表于 2011-9-1 22:45:05 | 显示全部楼层
定时器

AdlibRegister


都行
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-1 07:35 , Processed in 0.084720 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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