经常有人问我这个问题,现在特别把这个方法说一下。

 

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