按键精灵出现脚本溢出停止怎么解决?
按键精灵出现脚本溢出怎么回事呢?有没有解决办法?答案是肯定的!解决办法是有,不管是按键精灵或者是易语言都会有程序异常的现象,比如数组下标选择超出也会出现溢出现象,解决办法是,完善程序语法就可以了。
那么按键精灵的脚本异常现象如何解决呢???我们给大家提供一个解决思路吧,按照思路自己完善脚本代码即可。
下面是百度知道的一位网友提供的解决办法:
鼠标操作的窗口命令,不来要加引号源,引号去掉就行了
引号加了就等于是文本百了,不加引号才是变量度hwnd
【错误】
Call Plugin.Bkgnd.LeftClick(;Hwnd;, 0, 0)
【正确】
Call Plugin.Bkgnd.LeftClick(Hwnd, 0, 0)
其实按键脚本溢出的情况比较多,有时候是语法错误导致的溢出,有时候符号设置错误导致的异常,有有时候还有算法出现溢出,等等!!!
某些时候我们在调试按键脚本的时候会出现:“脚本 2017.9.7.Q ,第676行:溢出”这样的提示,我们分析下面的脚本代码,也出现溢出现象,是按键论坛某网友分析的问题代码。
Sub mousemove(tx, ty, trx, try,speed)//tx目标x坐标,ty目标y坐标,trx目标x偏移,try目标y偏移,速度(越高越慢) Dim julix,juliy,bushux,bushuy,drx,dry GetCursorPos nx, ny//首先获取鼠标当前x坐标nx,当前y坐标ny //计算加上随机值的终点坐标 Randomize xa = (int(Rnd * trx)) Randomize xy = (int(Rnd * try)) ftx = tx + xa fty = ty + xy //计算目标和鼠标的距离 julix = ftx - nx juliy = fty - ny //计算鼠标移动步数 bushux = abs(julix) bushuy = abs(juliy) //计算方向(+ -) Randomize a = 1+int(Rnd * 6) Delay a drx = julix / bushux//溢出在这里 Randomize a = 1+int(Rnd * 6) Delay a dry = juliy / bushuy//溢出在这里 Randomize c = 16+(int(Rnd * 10)) Delay c // //鼠标开始移动 While bushux <> 0 or bushuy <> 0//循环条件步数都不为0时(说明还没到那边) If bushux <> 0 and bushuy <> 0 Then //判断,x轴y轴都没到位置 MoveR drx, dry bushux = bushux - 1 bushuy = bushuy - 1 Randomize a = 1+int(Rnd * speed) Delay a ElseIf bushux <> 0 and bushuy = 0 Then//x到了y没到 MoveR drx, 0 bushux = bushux - 1 Randomize a = 1+int(Rnd * speed) Delay a ElseIf bushux = 0 and bushuy <> 0 Then//x没到y到了 MoveR 0, dry bushuy = bushuy - 1 Randomize a = 1+int(Rnd * speed) Delay a End If Wend drx = 0 dry=0 End Sub
那么这个问题代码的解决办法是!检查bushux和bushuy是不是在为0的情况下做了除数!!!又或者是:While bushux <> 0 or bushuy <> 0//循环条件步数都不为0时(说明还没到那边)都不 应该写 AND 而不是 OR,这样写是有一个不为0时,另一个可以为0,所以会造成后面的溢出!懂了吧!!!好了今天的文章就更新到这里,下期再见。