经常有人问我这个问题,现在特别把这个方法说一下。
比如有3个窗口,需要在一个脚本内分别控制,以达到多开的目的.
如果用我的插件如何实现呢? 其实很简单
比如有3个窗口同时操作.
那么代码如下
// 三个句柄(这里随便写的值,自己更换)
Dim hwnd_all(3)
hwnd_all(0) = 11111
hwnd_all(1) = 22222
hwnd_all(2) = 33333
// 声明3个对象(有几个窗口声明几个)
Dim dm_all(3)
// 分别创建对象
Set dm_all(0) = createobject("dm.dmsoft")
Set dm_all(1) = createobject("dm.dmsoft")
Set dm_all(2) = createobject("dm.dmsoft")
// 声明公共对象,用于切换
Set dm = nothing
hwnd = 0
// 调试用,打印下版本,好习惯
TracePrint dm_all(0).Ver()
// 分别绑定窗口
For i = 0 To 2
Call 切换对象(i)
dm_ret = dm.BindWindow(hwnd, "dx", "dx", "dx", 0)
// 检测返回值
If dm_ret = 0 Then
MessageBox "绑定失败"
EndScript
End If
Next
// 分别设置路径字库等
For i = 0 To 2
Call 切换对象(i)
dm.SetPath "c:\test"
dm.SetDict 0,"test.txt"
Next
// 脚本主循环
Do
For i = 0 To 2
Call 切换对象(i)
Call 打怪()
Next
Sub 切换对象(index)
Set dm = dm_all(index)
hwnd = hwnd_all(index)
// 如果还需要切换窗口也可以在这里操作
End Sub
Sub 打怪()
dm_ret = dm.FindStr(0, 0, 200, 200, "怪物名字", "ffffff-000000", 1.0, x, y)
If x > 0 Then
// 开始打怪
// 以下省略,和单开一样的写法
End If
End Sub
Sub OnScriptExit()
// 分别解绑窗口
For i = 0 To 2
Call 切换对象(i)
dm_ret = dm.UnBindWindow()
Next
End Sub