thebest 发表于 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,$coord)
        Else
          MouseMove(968,222)
                Sleep(10000)
        EndIf
        WEnd
EndFunc上面代码中在Sleep(10000)的时候,如果If Not @error 成立怎么能立即停止延迟执行MouseMove($coord,$coord)操作,打到两个循环各自执行?

gzh888666 发表于 2011-9-1 00:25:42

两个循环同时貌似需要多线程哟!

thebest 发表于 2011-9-1 00:51:25

{:face (356):}怎么个多线程法,来个代码

thebest 发表于 2011-9-1 08:58:45

来个高手帮帮忙

xowen 发表于 2011-9-1 09:56:35

AU3不支持多线程

thebest 发表于 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来实现多线程,好像以前看到过帖子,不过忘记了。。

thebest 发表于 2011-9-1 11:03:42

回复 7# 飘云


   Sleep(10000)的时候,如果If Not @error 成立怎么能立即停止延迟执行MouseMove($coord,$coord)操作
是不是无法实现呢

wsfda 发表于 2011-9-1 11:09:49

另一个循环使用定时器吧,au3实现多线程,不简单哦,要么问问版主....

qqgghh1 发表于 2011-9-1 11:14:54

如7L,sleep的时候,脚本是暂停的。不会去执行PixelSearch,就更不会去监听 If Not @error是否成立了。

小A 发表于 2011-9-1 11:21:51

sleep 程序睡眠了,不做任何动作。

thebest 发表于 2011-9-1 11:29:21

可不可以用runwait ?

yi834033 发表于 2011-9-1 16:21:48

坐等高手回复

seniors 发表于 2011-9-1 22:39:51

9楼说了,用定时器
_Timer_SetTimer

haodd 发表于 2011-9-1 22:45:05

定时器

AdlibRegister


都行
页: [1] 2
查看完整版本: 俩个循环怎么同时进行[已解决]