找图找色窗口插件相关内容自动补可以移动窗口的血

找图找色窗口插件相关内容自动补可以移动窗口的血_第1张图片

找图找色窗口插件相关内容自动补可以移动窗口的血_第2张图片

/*找色   得到指定点颜色   区域找色  模糊找色  中心找色

找图   区域找图 制作图片 透明图的制作 路径的方法两种 附件跟绝对 
       相似度 0.9-0.8之间

窗口插件

什么是句柄
查找窗口句柄 
查找子窗口句柄   (例如 父窗口句柄下有3子窗口句柄 都需要找出来的方法)
遍历窗口句柄
遍历窗口句柄(增强)
得到当面窗口句柄
得到按键焦点窗口句柄

自动补血
要求窗口可以随意移动,仍然可以自动补血 

这节课内容有点多, 我们用一个加血程序, 来把所有的功能和一些不常用的插件 命令一起用上来
练习下学到的知识 
因为是程序所以不按照 上面的排序来做了,  用一个加血程序来做  要先就是上面的方法都要用到

首先我们QQ浏览器打开 按键精灵实验室的加血程序
加血程序是一个flash程序 他在一个网页里  所以我们首先要先得到他的句柄才能操作它

//这个是我们用按键抓抓得到的信息
21499836  QQBrowser_WidgetWin_1 按键精灵 脚本实验室-兄弟软件官方网站
6555928   Internet Explorer_Server “ ”
30279944 QQBrowser_WidgetWin_0 
4262298  MacromediaFlashPlayerActiveX
 句柄      类名                  标题
 


 */ 
dim 父窗口句柄   //用来存放窗父口句柄
//查找flash父窗口句柄
//查找窗口类名("QQBrowser_WidgetWin_1",""),返回找到的句柄父窗口句柄
父窗口句柄 = Plugin.Window.Find("QQBrowser_WidgetWin_1","按键精灵 脚本实验室-兄弟软件官方网站")

//TracePrint "父窗口句柄:" & 父窗口句柄//这样就得到父窗口句柄了
//在利用父窗口窗找子窗口句柄
//根据父窗口句柄(父窗口句柄)查找子窗口匹配类名("Chrome_WidgetWin_1")或者匹配标题(0),返回找到匹配的句柄子窗口句柄
子窗口句柄1级 = Plugin.Window.FindEx(父窗口句柄,0,"Chrome_WidgetWin_1","无标题 - QQ浏览器")
//tracePrint "子窗口句柄1级:" & 子窗口句柄1级//这样就得到子窗口句柄5级了

子窗口句柄2级 = Plugin.Window.FindEx(子窗口句柄1级,0,"Chrome_RenderWidgetHostHWND","Chrome Legacy Window")
//tracePrint "子窗口句柄2级:" & 子窗口句柄2级//这样就得到子窗口句柄2级了

子窗口句柄3级 = Plugin.Window.FindEx(子窗口句柄2级,0,"HungHostWindow",0)
//tracePrint "子窗口句柄3级:" & 子窗口句柄3级//这样就得到子窗口句柄3级了

子窗口句柄4级 = Plugin.Window.FindEx(子窗口句柄3级,0,"QQBrowserMiniAx","http://zy.anjian.com/lab/content_02.html")
//tracePrint "子窗口句柄4级:" & 子窗口句柄4级//这样就得到子窗口句柄4级了

子窗口句柄5级 = Plugin.Window.FindEx(子窗口句柄4级,0,"Shell Embedding",0)
//tracePrint "子窗口句柄5级:" & 子窗口句柄5级//这样就得到子窗口句柄5级了
子窗口句柄6级 = Plugin.Window.FindEx(子窗口句柄5级,0,"Shell DocObject View",0)
//TracePrint "子窗口句柄6级:" & 子窗口句柄6级
子窗口句柄7级 = Plugin.Window.FindEx(子窗口句柄6级,0,"Internet Explorer_Server",0)
//TracePrint "子窗口句柄7级:" & 子窗口句柄7级
子窗口句柄8级 = Plugin.Window.FindEx(子窗口句柄7级,0,"MacromediaFlashPlayerActiveX",0)
//TracePrint "子窗口句柄7级:" & 子窗口句柄8级
/*这样就找到了flash窗口的句柄了,  因为不能跳级,所以必须一级一级的早。  如果级数超过三
级就最好别用这个来找了插件来找 我只是为了演示这个findEx的用法而且
上面这类数据都是通过抓抓获得的 我会传到微博里
  调试结束
 您的脚本在调试过程中,产生了下列调试信息:

脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第41行:父窗口句柄:21499836
脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第45行:子窗口句柄1级:27066790
脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第48行:子窗口句柄2级:30475722
脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第51行:子窗口句柄3级:3934152
脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第54行:子窗口句柄4级:2166752
脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第57行:子窗口句柄5级:7147440
脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第59行:子窗口句柄6级:3081398
脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第61行:子窗口句柄7级:6555928
脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第63行:子窗口句柄7级:397868
         下面用Search插件 来找子窗口 因为这个命令是通过标题的 我们的只窗口没
     有标题自然也就找不到,所以我们就用父窗口句柄:21499836 来演示了
    */ 
    //遍历符合窗口标题("按键精灵 脚本实验室-兄弟软件官方网站")的句柄保存到数组(窗口句柄集)里
窗口句柄集 = Plugin.Window.Search("按键精灵 脚本实验室-兄弟软件官方网站")
TracePrint"窗口句柄集:"&窗口句柄集 
/* 
您的脚本在调试过程中,产生了下列调试信息:
脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第84行:窗口句柄集:21499836|             
     这是一个字符串我们还得对他进行处理 */
窗口句柄="21499836"
Dim 窗口句柄集数组
窗口句柄集数组 = split(窗口句柄, "|")
 TracePrint 窗口句柄集数组(0) //调式一下找到的窗口句柄
 //您的脚本在调试过程中,产生了下列调试信息:

//脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第84行:窗口句柄集:21499836|
//脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第93行:21499836

          //SearchEX 这个增强的跟上面的差不多只要参数里还可以增加类名跟二种搜索方法
          
          //查找类名是"MacromediaFlashPlayerActiveX"且标题是0的窗口,查找方式0
flash窗口句柄 = Plugin.Window.SearchEx(0,"按键精灵 脚本实验室-兄弟软件官方网站",0)
//因为只有一个符合的类名  所以还是只有一个字符串后面+|的字符
//TracePrint flash窗口句柄

// 好了上面的我们都试过来了, 还有二个没试  这两个一般应对这种有多级句柄的时候非常有效
//我们来试试
//得到当面窗口句柄
//得到按键焦点窗口句柄

//得到当前最前面的窗口句柄
//得到鼠标指向的窗口句柄

flash窗口句柄1 = Plugin.Window.Foreground()

//TracePrint flash窗口句柄//很简单你只要在运行的时候把鼠标放到窗口最前点一下就行了
//因为这个是在网页里的,所以只能得到浏览器的句柄,    比如你用笔记本他就能得到笔记本的句柄
//这里就不说太多了 
//得到按键焦点窗口句柄  在按键里叫得到鼠标指向的窗口
//听名字就知道这个的功能可以帮我们得到 flash的窗口句柄了, 我们来试试

flash窗口句柄 = Plugin.Window.MousePoint()
TracePrint flash窗口句柄//现在我们要做的很简单,只要把鼠标移动到 FLASH窗口里就能
                       //得到这个程序里我们想要的flash窗口句柄  来调试一下看看
//来了句柄我们就说到这么多了 来看看调试结束
                       //您的脚本在调试过程中,产生了下列调试信息:

//脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第84行:窗口句柄集:21499836|
//脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第92行:21499836
//脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,第122行:397868 (flash句柄)

//
//得到窗口句柄的客户区大小
sRect = Plugin.Window.GetClientRect(flash窗口句柄)
Dim 客户端
客户端 = split(sRect, "|")
客户端X = Clng(客户端(0)):客户端Y = Clng(客户端(1))
客户端长 = Clng(客户端(2)): 客户端宽 = Clng(客户端(3))

TracePrint "客户端的XY长宽各是:" & 客户端X & 客户端Y & 客户端长 & 客户端宽
//脚本 找图找色窗口插件相关内容自动补可以移劝窗口的血.Q ,
//第139行:客户端的XY长宽各是:163199550400
// 也就是X=163 Y=199 长=550 宽 400

//们也先找色来现实, 然后在用找图  都要用到抓抓工具

//找色   得到指定点颜色   区域找色  模糊找色  中心找色
     /*
     重点 记的在找色和找图的时候一定要用抓抓定义定点坐标  
      定点坐标可以移动到窗口最左上角 也可以直接在抓抓里设置
      客户端的X和Y的值 这样我们在抓抓上抓取的坐标点在加上客户端X和Y的做标
      就能得到整个屏幕的真正坐标 
      举例
        我们把抓抓上定点坐标设置成客户端的X和客户端的Y坐标 
        我们在抓抓上 抓取的80%血点 是从客户端开始当0.0计算的距离的
        比如我们抓的是下面那个X=266 Y=39 其时他在屏幕上的真实坐标是
        266+163 39+199  
        这样我们以后想移动到80%血点的位置的时候 就可以直接用
        客户端 X+266 和客户端Y+199 就行了  而不是在去用抓抓来计算
        因为窗口如果移动过了, 你不用定点抓的做标下次就移动不到80%血的位置了
        而定点的话 你窗口变化 客户端 X跟Y也一样变化。所以可以精确移动到
        80%血的位置。
       //注意我们的图跟色都是用定点抓的坐标这样才能精准移动
      //
    */
//得到指定点的颜色 这时我们用抓抓得到的 血条80%位置的坐标跟颜色
//266,39  AEAEAE //
得到指定点的颜色=GetPixelColor(客户端X+266,客户端Y+39) //一会我们用他来做横版的加血

//TracePrint "颜色是不是跟我们在抓抓上显示的一样:" & 得到指定点的颜色
//调试显示 第155行:颜色是不是跟我们在抓抓上显示的一样:AFAFAF
找图开关=true

While 找图开关

IfColor 客户端X+266,客户端Y+39,得到指定点的颜色,0 then

KeyPress "Q", 1


Delay 50


End If         //
Delay 50
//区域找色     
FindColor 365+客户端X,客户端Y,447+客户端X,311+客户端Y,"AEAEAE",intX,intY
//以下是条件判断;如果返回的坐标大于0,那么就说明找到了。
If intX > 0 And intY > 0 Then
    //在这里可以添加找到坐标后,需要做的处理。

KeyPress "W", 1

End If
Delay 50
//模糊找色

FindColorEx 71+客户端X,107+客户端Y,95+客户端X,308+客户端Y,"FFFFFF",1,0.9,intX,intY
//以下是条件判断;如果返回的坐标大于0,那么就说明找到了。
If intX > 0 And intY > 0 Then
    //在这里可以添加找到坐标后,需要做的处理。
KeyPress "A", 1


End If
//中心找色
FindCenterColor 71+客户端X,107+客户端Y,95+客户端X,308+客户端Y,"FFFFFF",intX,intY
//以下是条件判断;如果返回的坐标大于0,那么就说明找到了。
If intX > 0 And intY > 0 Then
    //在这里可以添加找到坐标后,需要做的处理。
KeyPress "S", 1

End If

//找图   区域找图 制作图片 透明图的制作 路径的方法两种 附件跟绝对 
       //相似度 0.9-0.8之间

FindPic 0,0,1024,768,"Attachment:\123.bmp",0.9,intX,intY
If intX > 0 And intY > 0 Then

KeyPress "D", 1
End If

FindPic 580+客户端X,552+客户端Y ,679+客户端X,594+客户端Y,"Attachment:\321.bmp",0.9,intX,intY
If intX > 0 And intY > 0 Then

KeyPress "F", 1
End If


Wend

你可能感兴趣的:(找图找色窗口插件相关内容自动补可以移动窗口的血)