跳到主要内容

如何单脚本操作多窗口

比如有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
Loop

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