• 新浪微博:
  • 腾讯微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.05
软件大小:21.6M
更新时间:07-04

按键精灵安卓版
立即下载

软件版本:3.2.9
软件大小:62.5M
更新时间:12-07

按键精灵iOS版
立即下载

软件版本:1.3.1
软件大小:29.2M
更新时间:09-29

按键精灵Mac版
立即下载

软件版本:1.1.0
软件大小:12.3M
更新时间:12-29

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
发新话题 回复该主题

[已解决] 多线程的问题 [复制链接]

1#
哪里出了问题呢?
开启脚本之后 只有当前窗口可以执行代码
其他窗口键鼠就被锁住了 也不会执行代码
键鼠的模式我换过了 不行。。。。

感觉好像是多线程的问题 好几年没有接触按键了 忘记了 麻烦大大 帮帮忙、

是不是要激活窗口? 我也没捣鼓好。,。。


Call 注册大漠
DimEnv hwnd
HwndEx = Plugin.Window.Search("双线大区")
TracePrint HwndEx
arr1 = split(HwndEx, "|")
For i = 0 To UBound(arr1) - 1
TracePrint arr1(i)
hwnd = arr1(i)
TracePrint hwnd


线程ID = BeginThread(打怪)

Delay 1000
Next

Sub 打怪()


Dim HD

HD = hwnd
Call Plugin.Window.Move(HD, 0, 0)
Delay 500
Set dm = createobject("dm.dmsoft")
Call dm.SetPath ("c:\test_game")
dm_ret = dm.BindWindow(HD, "dx2", "dx", "dx", 0)

Delay 3000
Do
    
Delay 50
dm_ret = dm.FindPic(0,0,2000,2000,"满血怪.bmp","000000",0.9,0,intX,intY)
If intX >= 0 and intY >= 0 Then
TracePrint "找到"
dm.KeyPress 49
Else
TracePrint "没找到"
dm.KeyPress 9
End If
Delay 50

Loop
End Sub

最后编辑神之舞动 最后编辑于 2017-12-01 03:29:04
本主题由 超级版主 n15976906190 于 2017/12/1 16:38:10 执行 主题分类 操作
2#

回复 1楼神之舞动的帖子
  1. Call 注册大漠
  2. DimEnv hwnd
  3. HwndEx = Plugin.Window.Search("双线大区")
  4. TracePrint HwndEx
  5. arr1 = split(HwndEx, "|")
  6. For i = 0 To UBound(arr1) - 1
  7. hwnd = arr1(i)

  8. 线程ID = BeginThread(打怪)
  9. Delay 1000
  10. Next
  11. Sub 打怪()
  12. Dim HD
  13. HD = hwnd
  14. TracePrint HD
  15. Call Plugin.Window.Move(HD, 0, 0)'确定是否每个窗口均移动了[以便确定句柄是否正确]
  16. Delay 500
  17. Set dm = createobject("dm.dmsoft")
  18. Call dm.SetPath ("c:\test_game")
  19. dm_ret = dm.BindWindow(HD, "dx2", "dx", "dx", 0)'dx绑定键鼠建议先激活[没有子句柄?]
  20. Delay 3000
  21. Do
  22. Delay 50
  23. dm_ret = dm.FindPic(0,0,2000,2000,"满血怪.bmp","000000",0.9,0,intX,intY)
  24. If intX >= 0 and intY >= 0 Then
  25. TracePrint "找到"
  26. dm.KeyPress 49
  27. Else
  28. TracePrint "没找到"
  29. dm.KeyPress 9
  30. End If
  31. Delay 50'加大延迟 避免一个窗口过快找图 资源使用过大影响其他窗口
  32. Loop
  33. End Sub
  34. '其他并未看出明显问题
复制代码
txt遍历多开例子:
  1. DimEnv 父句柄
  2. Set dm = createobject("dm.dmsoft")
  3. hwnd = dm.EnumWindow(0,"记事本","",1+4+8+16)
  4. TracePrint "记事本句柄:" & hwnd
  5. hwnds = split(hwnd, ",")
  6. For i=0 to UBound (hwnds)
  7. 父句柄 = hwnds(i)
  8. 线程ID1 = BeginThread(按键)
  9. Delay 100
  10. Next

  11. Sub 按键()
  12. 父句柄1=父句柄
  13. Set dm = createobject("dm.dmsoft")
  14. 记事本子句柄= dm.GetWindow(父句柄1, 1)
  15. TracePrint 记事本子句柄
  16. dm_ret = dm.BindWindow(记事本子句柄, "gdi", "windows", "windows", 0)'如果对txt测试dx改为gdi
  17. Do
  18. Delay 1000
  19. dm.KeyPress 65
  20. Loop
  21. End Sub
  22. Sub OnScriptExit()
  23. dm.UnBindWindow
  24. End Sub
复制代码

最后编辑n15976906190 最后编辑于 2017-12-01 09:28:22
自命不凡,其实很落魄

个人QQ:1223116618 个人爱好群:677099204[加群有惊喜]
3#

回复 2楼n15976906190的帖子

谢谢大大 现在就回家试试

4#

回复 2楼n15976906190的帖子

试过了不行
刚刚看了 句柄都得到了 正常的
而且 我还注意到 如果我改成 循环打开角色栏 几个窗口是轮流打开的 不是一起开一起关
感觉就像是 这个点完了 其他号才能点 几个窗口不能同步

5#

回复 4楼神之舞动的帖子

注:你好 按键只有同时没有同步一说 多线程:各个线程交叉切换代码运行

自命不凡,其实很落魄

个人QQ:1223116618 个人爱好群:677099204[加群有惊喜]
6#

回复 5楼n15976906190的帖子

不明白,,,
可是我现在发现问题是 如果二个窗口 用我上面的代码 执行的按B 是轮流按的 不是一起按的。。。
还有其他多线程方法么? 是不是我这个方法不适合这个游戏?
还是绑定句柄之后需要先激活窗口? 激活的命令在什么地方加?

7#

回复 6楼神之舞动的帖子

注:你好 只有这个办法 而且一直以来都是轮流

自命不凡,其实很落魄

个人QQ:1223116618 个人爱好群:677099204[加群有惊喜]
8#

回复 7楼n15976906190的帖子

我不是这个意思。。。 我表达不好。。。 捉急
反正还是谢谢您
那我想激活窗口 是在绑定前 还是绑定后?激活呢?

9#

回复 8楼神之舞动的帖子

注:你好 先激活后绑定

自命不凡,其实很落魄

个人QQ:1223116618 个人爱好群:677099204[加群有惊喜]
发新话题 回复该主题