在当今智能化的时代,自动化操作越来越受到人们的青睐。其中,“按键精灵”作为一种自动化工具,可以帮助我们在电脑上完成重复性的工作。今天,我们就来探讨一下“按键精灵”如何通过后台操作来识别图片、文字和颜色。

后台原理

“按键精灵”之所以能够进行后台操作,主要是因为它能够模拟人的电脑操作。当我们在电脑上点击、输入或者查找时,实际上是在向电脑发送一系列的指令。而“按键精灵”就是通过模拟这些指令,来完成相应的操作。

set dm = createobject("dm.dmsoft")
//获取窗口句柄
hwnd = dm.FindWindow("Chrome_WidgetWin_1","口袋奇兵H5 | TopWar") 
TracePrint hwnd
//设置窗口大小
dm_ret = dm.SetWindowSize(hwnd, 1024, 1000)
//移动窗口位置
dm.MoveWindow hwnd, 10 , 10
//打印输出判断是否绑定成功;打印1表示绑定成功
TracePrint dm_ret
//获取文件附件保存位置(指的是默认位置)
base_path = dm.GetBasePath()
//打印一下
TracePrint base_path
//可以改变附件存放位置
dm_ret = dm.SetPath(base_path)
dm_ret = dm.SetDict(0,"C:\test_game\建电站.txt")
Dim i
i = 0
Dim s1,s2
s1 = 0
s2 = 0
//当条件成立时,进入循环,直到条件不成立,退出循环
While i <= 2000
    //绑定窗口(后台)
    //dm_ret = dm.BindWindow(hwnd, "normal", "windows", "normal", 0)
    //dm_ret = dm.BindWindowex(hwnd, "normal", "windows", "windows",0)
    dm_ret = dm.BindWindow(hwnd,"normal","windows","normal",0)
    //判断队列是否满
    s1 = dm.Ocr(149,411,163,426,"b@ffffff-5c6057",0.9)
    s2 = dm.Ocr(167, 412, 178, 426, "b@ffffff-5c6057", 0.9)
    If s1 < s2 or s1 = "" Then 
        dm_ret = dm.FindPic(893,634,995,709,"联盟标志.bmp","000000",0.9,0,intX,intY)
        If intX >= 0 and intY >= 0 Then 
            TracePrint intX
            TracePrint intY
            dm.MoveTo intX, intY
            dm.LeftClick
            Delay 200
            dm.MoveTo 360, 917
            dm.LeftClick
            Delay 200
            dm.LeftClick 
            Delay 300
            Call 识色()
            Delay 400
            TracePrint "建设次数:" & i+1
        End If
    End If
Wend
TracePrint "循环结束,i=" & i

Sub 识色
    dm_ret = dm.FindMultiColor(248,119,539,153,"8e76b1","",0.95,0,intX,intY)
    TracePrint dm_ret
    dm.MoveTo intX,intY
    If dm_ret = 1 Then 
        TracePrint "识别紫色成功"
        //点击蓝色电站坐标位置
        Delay 50
        dm_ret = dm.FindMultiColor(254,159,659,183, "16739f|1774a0", "", 0.90, 1, intA, intB)
        If dm_ret = 1 Then 
            TracePrint "识别蓝色成功"
            TracePrint intA
            TracePrint intB
            dm.MoveTo intA + 10, intB - 3
            dm.LeftClick 
            Delay 200
            //点击电站
            dm.MoveTo 504,512
            dm.LeftClick 
            Delay 200
            //点击建造
            dm.MoveTo 360,391
            dm.LeftClick 
            Delay 200
            //增援
            dm.MoveTo 666, 257
            dm.LeftClick 
            Delay 300
            //识字判断队列是否已满
            dm_ret = dm.FindStr(646,403,694,428,"获取","b@cacbc9-646464",0.8,intX,intY)
            If intX >= 0 and intY >= 0 Then 
                TracePrint "识字成功"
                Delay 2000
                dm.MoveTo 718,250
                dm.LeftClick 
                //队列都满了等待10秒
                Delay 10000
            Else 
                TracePrint "队列没有满"
                //如果队列没有满
                Delay 200
                dm.MoveTo 867,838
                dm.LeftClick 
                Delay 50
                dm.MoveTo 499,417
                dm.LeftClick
            End If
        End If
    Else 
        TracePrint "识别紫色失败"
        Delay 50
        dm.MoveTo 275,59
        dm.LeftClick 
        Delay 100
        dm.LeftClick 
        Delay 100
        dm.LeftClick 
        Delay 100
        Delay 10000
    End If
End Sub
dm.UnBindWindow            //解绑窗口
Set dm = Nothing			//释放大漠插件
文章作者: 烦恼的夏洛克
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 烦恼的夏洛克
脚本
喜欢就支持一下吧