按键精灵多线程跳转条件不成立do如何跳转到某一子程序

子程序里可以Goto到子程序外面的标记吗? _ 综合讨论 - 按键精灵论坛
腾讯微博:
软件版本:2014.05软件大小:76.8M更新时间:2-21
软件版本:3.2.5软件大小:62.5M更新时间:06-06
软件版本:1.2.7软件大小:29.2M更新时间:06-19
软件版本:1.1.0软件大小:12.3M更新时间:12-29
查看: 2263|回复: 17
如题,上代码,请大神帮我看下。这里调试会产生:Call 注册大漠Dimenv 环境变量句柄//环境变量,线程里面要用到.要定义为环境变量ID句柄字符串 = ""//****************************** 检测按键,动作 ***************************************do
Call Plugin.Msg.Tips("按Insert键绑定,按Delete键解绑")
Key = WaitKey()
等待用户按任何键
下面是Insert键,绑定鼠标指向的窗口的线程
If Key = 45 Then
环境变量句柄 = dm.GetMousePointWindow()
鼠标指向的窗口
先判断,这个句柄是否在绑定.如果绑定过.不再重复绑定这个窗口
位置 = Instr(ID句柄字符串, 环境变量句柄)
//Instr函数,作用是:返回"环境变量句柄"在 "ID句柄字符串"中 第一次出现的位置。没出现就是位置=0
如果位置=0 就绑定,预防重复绑定
TracePrint 位置
TracePrint ID句柄字符串
If 位置 = 0 Then
线程ID=BeginThread(多线程)
按一次Home键,就绑定一个窗口多开
句柄 = CStr(环境变量句柄)
ID = CStr(线程ID)
CStr函数是把整数转换成字符串类型
ID句柄字符串 = 句柄 + "|" + ID + "|" + ID句柄字符串
Call Plugin.Msg.Tips("已绑定,一个窗口")
Call Plugin.Msg.Tips("窗口已经绑定过了,请不要重复绑定")
Delay 2500
//########################################################
下面是按Delete键,停止鼠标指向的窗口的线程
Key = 46 Then
鼠标指向的句柄 = dm.GetMousePointWindow()
TracePrint ID句柄字符串
位置 = Instr(ID句柄字符串, 鼠标指向的句柄)
//Instr函数,作用是:返回"环境变量句柄"在 "ID句柄字符串"中 第一次出现的位置。没出现就是位置=0
如果位置=0 证明这个窗口当前没有绑定,预防没绑定就解绑
TracePrint 位置
TracePrint ID句柄字符串
If 位置 > 0 Then
数组 = Split(ID句柄字符串, 鼠标指向的句柄)
ID = 数组(1)
数组2 = Split(ID, "|")
ID2 = 数组2(1)
TracePrint ID2
StopThread ID2
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
下面是把停止的线程的ID和句柄,从ID句柄字符串去掉
TracePrint ID句柄字符串
删除数组 = Split(ID句柄字符串, 鼠标指向的句柄)
左边 = 删除数组(0)
ID3= ID2+"|"
删除数组2 = Split(ID句柄字符串, ID3)
右边 = 删除数组2(1)
ID句柄字符串 = 左边 + 右边
TracePrint ID句柄字符串
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Call Plugin.Msg.Tips("已解绑,一个窗口")
Call Plugin.Msg.Tips("窗口都没绑定过,你解绑什么嗯,想下标越界么")
Delay 2500
Delay 1500
适当延迟,避免连按键
Call Plugin.Msg.Tips("")Loop //////****************************** 多线程程序 ***************************************Sub 多线程
Set dm = createobject("dm.dmsoft")
//↑创建“一个对象”
dm_ret = dm.SetDict(0,"c:\test_game\dm_soft.txt")
Call 绑定()
//下面是你要编写的程序
Rem 完成返回
Call 确认地图名坐标()
dm_ret = dm.FindStr(qrX, qrY, qrX1, qrY1, "奥林匹斯圣山", "ffffff-000000", 1.0, intX, intY)
If intX >= 0 and intY >= 0 Then
Call 返图()
End IfEnd Sub////////****************************** 注册大漠 ***************************************Sub 注册大漠
need_ver = "3.1233"
//首先添加大漠插件"dm.dll""regdll.dll"到附件!!!
//下面第一句释放"dm.dll"到你所需要的文件夹,这个目录自己改
PutAttachment "C:\泰坦战争", "dm.dll"
PutAttachment "C:\泰坦战争", "*.txt"
PutAttachment "C:\泰坦战争", "*.bmp"
//下面是释放注册插件到按键的插件文件夹,这个不能改
PutAttachment ".\plugin", "Regdll.dll"
//以下是注册
Call Plugin.RegDll.Reg("C:\泰坦战争\dm.dll")
set dm = createobject("dm.dmsoft")
ver = dm.Ver()
need_ver then
set dm = nothing
set ws=createobject("Wscript.Shell")
ws.run "regsvr32 C:\泰坦战争\dm.dll /s"
set ws=nothing
Delay 1200
set dm = createobject("dm.dmsoft")
ver = dm.Ver()
need_ver then
messagebox "插件版本错误,当前使用的版本是:"&ver&",插件所在目录是:"&dm.GetBasePath()
messagebox "请关闭程序,重新打开本程序再尝试"
//上面是注册大漠
dm_ret = dm.SetDict(0, "c:\test_game\dm_soft.txt")
//字库 End SubSub 绑定()
Hwnd = 环境变量句柄
dm_ret = dm.BindWindow(Hwnd,"dx2","windows","windows",0)
//绑定窗口
If dm_ret=0 Then
//判断上面是否获取到句柄
MessageBox "错误;请把鼠标移到游戏窗口内,再启动脚本"
dm.DownCpu 50
dm_ret = dm.SetPath("C:\泰坦战争")
dm_ret = dm.SetDict(0, "C:\泰坦战争\dm_soft.txt")
//设置全局路径,设置了此路径后,所有接口调用中,相关的文件都相对于此路径. 比如图片,字库等.
//设定附件的路径,以后找图命令里面就没必要添加路径了
dm.SetShowErrorMsg 0
//不显示错误信息End SubSub 确认地图名坐标()
dm_ret = dm.FindPic(0, 0, , "U.bmp", "000000", 0.9, 0, intX, intY)
If intX >= 0 and intY >= 0 Then
qrX = intX - 4
qrY = intY - 54
qrX1 = intX + 128
qrY1 = intY - 37
End IfEnd SubSub 返图()
Delay 5000
Call 确认地图名坐标()
qrt = dm.Ocr(qrX, qrY, qrX1, qrY1, "ffffff-000000", 1.0)
If sjd = qrt Then
Goto 完成返回
Call 结束修炼()
End IfEnd SubSub OnScriptExit()
dm.UnBindWindowEnd Sub
脚本作者商业小精灵作者绑定账号后自动赠送学有所成学有所成勋章,新手步入按键学堂的第一枚勋章按键精灵开发者6级可通过提升认证等级来升级勋章:端午节勋章(30天)按键精灵端午节活动纪念勋章黄金之翼黄金之翼勋章按键明星按键明星勋章月全勤论坛自然月(如8.1-8.31)签到满勤,系统会在月底自动判断发放。
GOTO不能在子程序之间跳
按键精灵开发者4级可通过提升认证等级来升级勋章:学有所成学有所成勋章,新手步入按键学堂的第一枚勋章
本帖最后由 No_longer_conti 于
21:09 编辑 刚刚口误,同一个子程序内的标记可以跳转,也可以从一个子程序跳到外部,但是不能从一个子程序跳到另一个子程序。
脚本作者商业小精灵作者绑定账号后自动赠送学有所成学有所成勋章,新手步入按键学堂的第一枚勋章按键精灵开发者6级可通过提升认证等级来升级勋章:端午节勋章(30天)按键精灵端午节活动纪念勋章黄金之翼黄金之翼勋章按键明星按键明星勋章月全勤论坛自然月(如8.1-8.31)签到满勤,系统会在月底自动判断发放。
No_longer_conti 发表于
20:32 Goto能在子程序之间跳,也能从里面跳到外面Call test1Call test2Sub test1Goto aaEnd SubSub test2Rem aaEnd Sub你跳跳看
脚本作者商业小精灵作者绑定账号后自动赠送学有所成学有所成勋章,新手步入按键学堂的第一枚勋章按键精灵开发者6级可通过提升认证等级来升级勋章:端午节勋章(30天)按键精灵端午节活动纪念勋章黄金之翼黄金之翼勋章按键明星按键明星勋章月全勤论坛自然月(如8.1-8.31)签到满勤,系统会在月底自动判断发放。
LZ脚本流程我简化下就是这样Call test1Sub test1Rem aaCall test2End SubSub test2Goto aaEnd Sub这样肯定是不能跳的
脚本作者商业小精灵作者绑定账号后自动赠送学有所成学有所成勋章,新手步入按键学堂的第一枚勋章按键精灵开发者6级可通过提升认证等级来升级勋章:端午节勋章(30天)按键精灵端午节活动纪念勋章黄金之翼黄金之翼勋章按键明星按键明星勋章月全勤论坛自然月(如8.1-8.31)签到满勤,系统会在月底自动判断发放。
改成这样就可以了Rem aaCall test1Sub test1Call test2End SubSub test2Goto aaEnd Sub
脚本作者商业小精灵作者绑定账号后自动赠送学有所成学有所成勋章,新手步入按键学堂的第一枚勋章按键精灵开发者6级可通过提升认证等级来升级勋章:端午节勋章(30天)按键精灵端午节活动纪念勋章黄金之翼黄金之翼勋章按键明星按键明星勋章月全勤论坛自然月(如8.1-8.31)签到满勤,系统会在月底自动判断发放。
不过不建议GOTO直接从子程序内部往外跳,可以把子程序做成函数后,利用返回值在主程序中做判断控制流程
发帖高手鼓励积极回复,但注意不要灌水哦按键精灵开发者3级可通过提升认证等级来升级勋章:
本帖最后由 jexxllz 于
20:44 编辑 少用goto
按键精灵开发者4级可通过提升认证等级来升级勋章:学有所成学有所成勋章,新手步入按键学堂的第一枚勋章
本帖最后由 No_longer_conti 于
20:50 编辑 zny1982 发表于
20:37LZ脚本流程我简化下就是这样Call test1标记放到子程序外面可以跳转,放到里面也应该可以跳转,如果熟悉Call的性质目测是可以跳转的,你在中间加个弹出框试试吧。手机看的。
脚本作者商业小精灵作者绑定账号后自动赠送学有所成学有所成勋章,新手步入按键学堂的第一枚勋章按键精灵开发者6级可通过提升认证等级来升级勋章:端午节勋章(30天)按键精灵端午节活动纪念勋章黄金之翼黄金之翼勋章按键明星按键明星勋章月全勤论坛自然月(如8.1-8.31)签到满勤,系统会在月底自动判断发放。
No_longer_conti 发表于
20:49 标记放到子程序外面可以跳转,放到里面也应该可以跳转,如果熟悉Call的性质目测是可以跳转的,你在中间 ...你上机调试过再来回帖
努力学习中
抗战胜利70周年勋章抗战胜利70周年活动的专属勋章按键14周年庆纪念勋章按键14周年庆纪念勋章(360天)黄瓜勋章(永久)体验商业小精灵活动的奖励情人节勋章(30天)天下有情人终成眷属按键精灵开发者5级可通过提升认证等级来升级勋章:小红帽对论坛提出良好建议(可向管理员申请)爱心大使积极帮助新手(可向管理员进行申请)学有所成学有所成勋章,新手步入按键学堂的第一枚勋章
这个我觉得是自己的设计的流程有点问题。造成子脚本goto子脚本。调整下就成了
发帖高手鼓励积极回复,但注意不要灌水哦学有所成学有所成勋章,新手步入按键学堂的第一枚勋章按键精灵开发者4级可通过提升认证等级来升级勋章:
andywenming
按键精灵开发者2级可通过提升认证等级来升级勋章:
按键精灵开发者6级(新浪V认证)通过新浪微博加V后自动发放,并替换普通的认证6级勋章。 微博达人(90天)完成新浪微博加V的奖励,结合活动不定期开放申请。学有所成学有所成勋章,新手步入按键学堂的第一枚勋章鹰眼勋章鹰眼注册用户专属勋章黄瓜勋章(永久)体验商业小精灵活动的奖励幸运草勋章(永久)商业小精灵限时活动勋章。马年勋章(360天) 马年纪念勋章(360天)
感觉自己还有好多不知道,怎么办?
亲,我很认真的对待着每一个问题,我不知道的我会悄悄的学习,我知道的我定倾囊帮助您解决。若我的回答对您有帮助,请您轻轻的将鼠标移动到评分处为我评分,谢谢您!
若我的回答有不当之处,还望多多指教,我们共同学习!
按键精灵开发者2级可通过提升认证等级来升级勋章:
按键精灵开发者2级可通过提升认证等级来升级勋章:
一个脚本最多不要超过2个goto
&&QQ群& &EZ工作室承接各类脚本定制你的位置:
双线程,其中的一个子程序把另一个线程暂停的问题
23:54:48 |
来源: 按键精灵资源站
本帖最后由 shiworg 于
11:52 编辑
开一个双线程的脚本,每个线程引用一个子程序,其中第二个线程的子程序编入暂停第一个线程的代码,这个是不能实现的么?试了两次都不成
代码如下:
A = BeginThread(线程A)
B = BeginThread(线程B)
Delay 15000
StopThread A
StopThread B
& && &&&MessageBox &线程A执行中...&
& && &&&Delay 1000
& && &&&MessageBox &线程B执行中...&
& && &&&Delay 2000
& && &&&PauseThread A
& && &&&Delay 2000
& && &&&MessageBox &A被暂停啦~~&
& && &&&Delay 1000
& && &&&MessageBox &A仍在暂停~~&
& && &&&Delay 1000
& && &&&ContinueThread A
& && &&&Delay 1000
下载地址请访问原帖
看图片下面的调试记录,发现暂停A线程之后A线程依旧在运转,不解之,,求高年级同学讲解一下{:4_99:}
已经解决,必须加上定义环境变量,如下
DimEnv A,B
A = BeginThread(线程A)
B = BeginThread(线程B)
Delay 10000
StopThread A
StopThread B
Sub 线程A()
& && &&&MessageBox &线程A执行中...&
& && &&&Delay 1000
Sub 线程B()
& & MessageBox &线程B执行中...&
& & Delay 2000
& & traceprint A
& & PauseThread A
& & Delay 2000
& & MessageBox &A被暂停啦~~&
& & traceprint A
& & Delay 2000
& & ContinueThread A
& & traceprint A
& & MessageBox &A又开始啦~~&按键精灵怎么设置网络游戏?
按键精灵怎么设置网络游戏?
09-10-19 &
如何使用按键精灵?(使用步骤) 使用步骤如下: 1. 制作脚本:按照个人需求从网上搜集脚本或者自己制作脚本。如果您的脚本是从别的地方收集的,请先把脚本文件拷贝到按键精灵文件夹下的SCRIPT文件夹中,然后再运行按键精灵。 2.选择有效的窗口:建议您选择“对所有窗口有效”。如果您只需要脚本当某个窗口在前台时有效,请选择窗口名称,比如“龙族” 3.让需要执行的脚本“有效”,只有“有效”一栏中勾中的脚本才会执行。 4.进入游戏(或者其他需要使用按键精灵的软件) ,在需要使用脚本的时候按下脚本的“快捷键”,按键精灵就会忠实的为您工作了。 按键精灵主界面 图:主界面及功能按钮 主界面功能简介: 增加:增加一个新的脚本。 修改:修改当前选中的脚本。 删除:删除当前选中的脚本,可以同时选中多个脚本进行删除。 录制:录制新的脚本,新手制作脚本首选功能。 上传:将当前脚本上传至按键精灵网站,与他人进行交流。 全部有效/无效:让所有脚本有效或者无效。 注册:注册按键精灵,使用正版软件。 帮助:查看用户帮助手册。 图:录制功能 录制功能简介: 强烈推荐的功能!能够忠实记录您的动作,并在脚本执行时回放,新手也可随心所欲制作脚本。按下SCROLLLOCK键就可以开始录制,再次按下就可停止录制,最后保存即可。如果您需要按键精灵忠实的记录鼠标移动轨迹,在后面的“记录鼠标移动轨迹”前面打个勾就可以了。录制过程中可以随便移动录制工具条,不会对您录制的动作产生任何影响。 图:上传脚本 上传脚本功能简介: 在主界面选择一个脚本,点击“上传”按钮就可以进入上传脚本界面。 您可以将自己比较得意的脚本上传到 们的服务器。在您的脚本上传成功之后, 们将会进行人工审核。不错的脚本都会被 们推荐给其他玩家共同学习。 上传时按键精灵会自动填写一些信息。请您在“脚本说明”里写上脚本的用途、制作思路等你认为对其他人有帮助的信息。没有说明或者说明不清楚的脚本将无法获得推荐。:-) 脚本编辑器 图:脚本编辑器界面 脚本编辑器使用说明: 在动作选择区选择动作,插入右边的脚本内容区即可。脚本支持粘贴、复制、移动、删除等操作。 脚本编写完毕之后,在脚本设置区进行一些必要的设置,点击“保存脚本” ,就可保存当前制作的脚本,点击右上角的X符号可以关闭编辑器返回主界面。 注意: 们默认的终止热键是“F12” ,目前所有的脚本使用同一个终止热键,也就是按下一个终止热键之后,所有的脚本就会停止运行。 图:脚本调试功能 脚本调试功能简介: 脚本调试功能允许您随时观察脚本的执行顺序,也可以随意暂停/继续脚本的运行,方便查找脚本错误。当您点击“执行”后,脚本将会开始执行,同时记录下每一步执行了哪条动作(语句),您可以随时按“暂停”热键暂时中止脚本执行,然后点击“语句编号”立刻查看,看完以后可以随时让脚本从中断处恢复执行。 执行热键: SCROLLLOCK 暂停热键:PAUSE 停止热键:SCROLLLOCK 图: 抓点界面 抓点功能简介: 用户可以抓取20个坐标点以及相应坐标点的颜色。抓点热键包括数字键0到9,以及数字键下方的10个字母键Q到P。按下热键即可获得鼠标当前所在位置的坐标和颜色,以备制作脚本时使用。 偏移抓点:当使用偏移抓点时,实际抓到的是鼠标附近的一点的坐标和颜色(具体抓到的点用一个“瞄准镜”表示)。这样可以解决在某些情况下,鼠标图标颜色会挡住真实坐标颜色的问题。 按键精灵动作介绍 按键精灵的所有动作都需要在“动作选择区”中选定,然后插入“脚本内容区”。按键精灵的所有功能也都集中在动作选择区中。 按键精灵提供了丰富的动作供大家选择,这些动作分为四个大类。分别介绍如下 键盘动作: 按键动作:模拟键盘按下、弹起以及按键的动作。可以区分按下状态和弹起状态,也就是可以模拟按住一个键不放的动作 按键组合:模拟按下组合键的情况 鼠标动作: 鼠标点击动作:共有7种点击类型供你选择,单击或者双击,左键或者右键,等等。 抓点动作:点击“抓点”出现抓点界面,内置20个抓点热键可以抓取20个坐标点,足以满足大部分人的需要 鼠标移动动作:将鼠标移动到屏幕上某个预定的坐标点 鼠标相对移动:将鼠标相对当前位置进行移动 保存/恢复鼠标位置:保存当前鼠标位置、恢复鼠标位置到最后一次保存的位置 控制动作: 颜色控制动作:如果某一点的颜色符合条件,就执行后面的语句,颜色可以在“抓点”窗口中抓取 循环动作:将脚本反复执行 跳转动作: 在脚本的某个位置先设置一个“标记”,然后就可以在这里选择直接跳转到“标记”处 子程序调用:制作脚本子程序,可以随时调用 停止脚本运行:停止脚本运行功能 其它动作: 延时:可以让脚本停顿一段时间再继续执行 输入文本:输入一串文本,支持中文输入 注释/标记:你可以给自己的语句加以注释,同时这些注释也可以用来作为“跳转语句”中的“标记” 弹出窗口:弹出窗口显示窗口提示内容,可以暂停脚本的运行 按键精灵脚本编程语句 1.转移语句:GOTO 格式:GOTO [标记] 解释:跳转到标记的位置 2.注释或标记语句:REM 格式:REM [注释或标记] 解释:可以当作标记供跳转语句使用,也可以当作脚本的注释使用 3.条件语句:IFCOLOR ... ENDIF 条件正 格式: IFCOLOR X Y COLOR 0(X、Y为桌面横坐标和纵坐标,COLOR为颜色RGB码) [语句块] ENDIF 解释:如果坐标点(X,Y)的颜色等于COLOR的数值,则执行语句块中的内容 条件反 格式: IFCOLOR X Y COLOR 1 [语句块] ENDIF 解释:如果坐标点(X,Y)的颜色不等于COLOR的数值,则执行语句块中的内容 4.循环语句:FOR ... ENDFOR 格式: FOR [循环次数] [语句块] ENDFOR 解释:将语句块反复执行数次,执行次数由“循环次数”控制 5.延时语句:DELAY 格式:DELAY [毫秒] 解释:等待一些时间再执行下一句脚本。 6.光标移动语句:MOVETO、MOVER 格式: 绝对移动:MOVETO X Y 解释:移动鼠标到(X,Y)点 相对移动:MOVER DX DY(DX、DY为正时表示正方向移动,为负即为负方向移动) 解释:相对当前坐标横向移动鼠标X,纵向移动鼠标Y 7.鼠标控制语句:LEFTCLICK、RIGHTCLICK、LEFTDOUBLECLICK、LEFTDOWN、LEFTUP、RIGHTDOWN、RIGHTUP 格式: 左键单击:LEFTCLICK 1 右键单击:RIGHTCLICK 1 左键双击:LEFTDOUBLECLICK 1 左键按下:LEFTDOWN 1 左键弹起:LEFTUP 1 右键按下:RIGHTDOWN 1 右键弹起:RIGHTUP 1 8.键盘按键语句:KEYPRESS、KEYDOWN、KEYUP 格式: 按键:KEYPRESS CODE 1(CODE为键盘 ASCII码) 按住:KEYDOWN CODE 1 弹起:KEYUP CODE 1 9.输入字符串语句:SAYSTRING 格式:SAYSTRING [要输入的字符串] 10.保存/恢复鼠标位置 格式: 保存鼠标位置:SAVEMOUSEPOS 解释:保存当前鼠标位置 恢复鼠标位置:RESTOREMOUSEPOS 解释:将鼠标移动到上一次保存的鼠标位置 这两个语句常用于制作网络游戏练功脚本,脚本开始时保存鼠标位置,脚本结束时恢复鼠标位置。 11.子程序、子程序调用 格式: SUB [子程序名] [语句块] RETRUN 解释:将一些语句放在子程序中,可以被反复调用 GOSUB [子程序名] 解释:调用子程序中的语句块 11.脚本停止运行 格式:ENDSCRIPT 解释:完全停止当前脚本的运行。可以用于调试脚本。 12.弹出窗口 格式:MESSAGEBOX [窗口显示内容] 解释:弹出一个窗口,显示设置的内容,用户点击“确定” 方可继续运行脚本,可以用于暂停脚本的运行按键精灵是根据你要按的键,他自动帮你按 首先你要知道你需要按哪些键,和这些键的顺序 和按每个键之间的时间 然后在按键精灵里面编辑脚本 最后设置热键启动按键精灵 它就可以自动的帮你按这些键了 而且可以无限循环
请登录后再发表评论!新浪?按键精灵开发者二级认证参考答案2016_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
新浪?按键精灵开发者二级认证参考答案2016
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩14页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 按键精灵标记和跳转 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信