手机按键精灵免root 大漠多线程 重复调用子程序 问题

你的位置:
大漠插件 多线程后台经常无故失效,求老师给我看看哪里不能循环了?
17:55:28 |
来源: 按键精灵资源站
我自己写的的大漠多线程后台脚本,但是经常是正常运行了2-3小时候无故失效。无任何操作了。。不知道是绑定问题吗?有没有老师帮我看看**问题。。给我个思路好吗。[code]
Call 注册大漠()
多开数量 =2
& & Key = WaitKey()
& & Delay 20
& & If Key = 36 Then
& && &&&//&&等待用户按&&Home键,多开.
& && &&&aa = dm.GetMousePointWindow()
& && &&&//& && &鼠标指向的窗口&&
& && &&&BeginThread 主程序
& && &&&//& && &多线程&&
& && &&&//&&按一次Home键,就绑定一个窗口多开
& && &&&多开数量= 多开数量-1& && &
& & End If
& & If 多开数量 & 1 Then
& && &&&Exit Do
& & End If
& & //& & 多开方法:
& & //& &&&1.把鼠标指向窗口,先按启动脚本快捷键.
& & //& && & 再按Home键.
& & //& &&&2,把鼠标移动到第二个窗口,按Home键.
& & //& &&&3--------
& & Delay 2000
& & //&&循环,不要让程序没东西运行而结束.&&
Sub 主程序()
set dm = createobject(&dm.dmsoft&)
& & //↑创建“一个对象”
//& & dm_ret = dm.SetDict(0,&c:\test_game\dm_soft.txt&)
& & Call 绑定()
& & //下面是编写的程序
& &&&dm.LockInput 1
Call 我自己的脚本()& &
& & //&&上面是调用我自己的脚本
& & dm.LockInput 0
Sub 注册大漠()
PutAttachment &c:\test_game&,&*.*&
Set dm = createobject(&dm.dmsoft&)
dm.Setpath &C:\test&
hwnd = dm.getmousepointwindow()
Sub 绑定()
dm_ret = dm.BindWindowEx(aa,&dx2&,&dx.mouse.position.lock.api&,&dx.keypad.raw.input&,&dx.public.memory&,2)
& & //绑定窗口
& & If dm_ret=0 Then
& && &&&//判断上面是否获取到句柄
& && &&&MessageBox &错误;请把鼠标移到游戏窗口内,再启动脚本&
& & End If
& & //& & dm.DownCpu 50&&你的位置:
多线程大漠绑定窗口。。一个窗口只能绑定两次么?。。
22:54:24 |
来源: 按键精灵资源站
主线程绑定了一次 然后线程一绑定了一次 线程二再绑定的时候提示绑定失败。。 把线程一删了去,就没有提示绑定失败了。。 也就是说&&主线程绑定一次,线程一绑定一次没问题&&主线程绑定一次,线程二绑定一次也没问题, 但是主线程绑定一次,线程一绑定一次,线程二再绑定就提示绑定失败了。。蛋疼。。游戏是DNF。。
到底是我写的问题 还是本身的问题 还是游戏的问题呢?
或者再求一个不用多线程可以检测DNF验证码的。。。你的位置:
多线程脚本大漠后台无法输入文本 (分析)
19:46:35 |
来源: 按键精灵资源站
本帖最后由 rmj222 于
02:28 编辑
单脚本的先鼠标左键点击一次激活输入框, 用dm.SendString hwndex, &测试&, 这样就可以输入(一般游戏的对话框)
多线程脚本,如上操作怎么样都不能输入
hwndex, &dx&, &dx2&, &dx&, 0)
按1开始线程
按3结束线程
线程1内容:
游戏内键鼠操作正常,点开某些对话框,用 dm.SendString hwndex, &测试&&&,无法输入文本,但换成&&dm.KeyPress 按键码&&这些 都可以正常输入&&
另外&&如果用按键自己的& & Call Plugin.Bkgnd.SendString(hwndex, &测试&)& && & 可以输入&&但&&有时候鼠标在别的输入窗口(比如QQ对话框),内容就会输入到QQ对话框,而不是游戏里面
各位大神帮忙看看
(最新发现在子线程里面的局部变量全部不能赋新值,调用子线程内部的局部变量全部是空的,把环境变量赋给局部变量也不行,但可以把子线程里面的某个变量(比如是句柄)赋值给环境变量,调用也没问题,但因为我是多窗口调用不同子程序各自的局部变量,如果用环境变量来储存,就导致都调用到同一个数据)你的位置:
【贱哥】按键多线程无限多开 单启动 单停 示例(大漠插件版)
15:57:25 |
来源: 按键精灵资源站
下面的代码实现效果是&&启动脚本之后 按home键可以使脚本控制最顶层的记事本窗口&&按end键停止对应窗口的线程
下面这段代码 实际运行起来没什么效果 因为没有添加记事本窗口绑定命令 只是个例子 大家自己稍微改下就可以用了&&
& && && && && & 实际已经完成的脚本是很正常的
{:5_147:}冒泡 防踢
[code]LogStart &c:\日志.log&&&//这句记录日志 可以去掉
DimEnv base_path
//定义线程信息数组和句柄数组
Dim 线程数组(30)
Dim 句柄数组(30)
//给数组赋值
& & 线程数组(i) = 0
& & 句柄数组(i)=0
Set dm = createobject(&dm.dmsoft&)
base_path = dm.GetBasePath()
dm.SetPath base_path
dm_ret = dm.SetDict(0, &ziku.txt&)
//如果是大漠VIP用户 这里写注册代码
Call Plugin.Msg.Tips(&脚本启动成功,按home键可以启动脚本&)
//下面的就是主要代码了
Do While 1
& & anj = GetLastKey()
& & //如果按下的是home就是启动一个线程&&36是home键的按键码
& & If anj = 36 Then
& && &&&Hwnd = dm.FindWindow(&Notepad&, &&)
& && &&&If Hwnd && 0 Then
& && && && &线程ID = BeginThread(脚本)
& && && && &Delay 5000
& && && && &TracePrint &启动& & 线程ID
& && && && &//下面是找到一个没有使用的数组元素&&将当前的窗口句柄和对应的线程句柄赋值保存
& && && && &i=0
& && && && &For 31
& && && && && & If 线程数组(i) =0 and 句柄数组(i) = 0 Then
& && && && && && &&&句柄数组(i)=Hwnd
& && && && && && &&&线程数组(i) = 线程ID
& && && && && && &&&Exit For
& && && && && & End If
& && && && && & i=i+1
& && && && &Next
& && &&&End If
& & End If
& & //如果按下的是end 就是停止一个线程
& & If anj = 35 Then
& && &&&Hwnd = dm.FindWindow(&Notepad&, &&)
& && &&&//& && &&&查找当前最顶层的窗口句柄 并且找出数组中对应的数组元素
& && &&&i=0
& && &&&For 31
& && && && &If 句柄数组(i) = Hwnd Then
& && && && && & 停止线程=线程数组(i)
& && && && && & StopThread 停止线程
& && && && && & Delay 3000
& && && && && & 句柄数组(i) = 0
& && && && && & 线程数组(i) = 0
& && && && && & //& && && && && & 停止线程之后把数组的值赋值为0
& && && && && & Exit For
& && && && &End If
& && && && &i=i+1
& && &&&Next
& & End If
& & Delay 1000
& & //加个延时 减少cpu占用
Sub 脚本()
& & //& & & & 多线程 每个线程都要创建大漠对象
& & Set dm = createobject(&dm.dmsoft&)
& & dm.SetPath base_path
& & dm_ret = dm.SetDict(0, &ziku.txt&)
& & Hwnd = dm.FindWindow(&Notepad&, &&)
& & // 防止窗口重复绑定
& & dm_ret = dm.IsBind(hwndps1)
& & If dm_ret = 1 Then
& && &&&EndScript
& & End If
& & //下面是脚本内容
& & //上面是脚本内容
Sub OnThreadExit()
& & //& & 这个是解绑线程的大漠绑定 多线程必须要这个 不然被绑定的窗口容易消失
& & dm_ret = dm.UnBindWindow()
Sub OnScriptExit()
& & //& & 这个是解绑主脚本的大漠绑定
& & dm_ret = dm.UnBindWindow()
& & [/code]你的位置:
诚心求教大漠多线程多窗口问题
21:01:22 |
来源: 按键精灵资源站
现在的问题是永远只会返回第一个窗口的句柄.不晓得错在哪里.请各位大师指点
Dimenv Hwnd1, Hwnd2, Hwnd3
PutAttachment &.\plugin&, &*.dll&
PutAttachment &.\plugin\大漠&, &*.bmp&
PutAttachment &.\plugin\大漠插件&, &*.txt&
PutAttachment &.\plugin\大漠插件&, &dm.dll&
Call Plugin.RegDll.Reg(&.\plugin\大漠插件\dm.dll&)
Set dm = createobject(&dm.dmsoft&)
dm.SetPath &.\plugin\大漠插件&
//dm.SetDict 0,&dm_soft.txt
dm.setdict 0, &字库.txt&
HwndEx = Plugin.Window.Search(&新&)
Hwnd = Split(HwndEx, &|&)
//查找2个窗口返回各自的变量
hwnd1 = dm.GetMousePointWindow()
hwnd2 = dm.GetMousePointWindow()
BeginThread A : BeginThread B
//下边是线程a
PutAttachment &.\plugin&, &*.dll&
PutAttachment &.\plugin\大漠插件&, &*.bmp&
PutAttachment &.\plugin\大漠插件&, &*.txt&
PutAttachment &.\plugin\大漠插件&, &dm.dll&
Call Plugin.RegDll.Reg(&.\plugin\大漠插件\dm.dll&)
Set dm = createobject(&dm.dmsoft&)
dm.SetPath &.\plugin\大漠插件&
dm.setdict 0, &字库.txt&
HwndEx = Plugin.Window.Search(&新&)
MessageBox Hwnd1
dm_ret = dm.UnBindWindow()& & & &
//下边是线程B
PutAttachment &.\plugin&, &*.dll&
PutAttachment &.\plugin\大漠插件&, &*.bmp&
PutAttachment &.\plugin\大漠插件&, &*.txt&
PutAttachment &.\plugin\大漠插件&, &dm.dll&
Call Plugin.RegDll.Reg(&.\plugin\大漠插件\dm.dll&)
Set dm = createobject(&dm.dmsoft&)
dm.SetPath &.\plugin\大漠插件&
//dm.SetDict 0,&dm_soft.txt
dm.setdict 0, &字库.txt&
//dm.SetDict 0,&dm_soft.txt
HwndEx = Plugin.Window.Search(&新&)
MessageBox Hwnd2
& & & & dm_ret = dm.UnBindWindow()
现在的问题是永远只会返回第一个窗口的句柄.不晓得错在哪里.请各位大师指点!!!}

我要回帖

更多关于 按键精灵子程序参数 的文章

更多推荐

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

点击添加站长微信