金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓脚本,IOS脚本,注册脚本,点赞脚本,阅读脚本以及网赚脚本等各个领域。想制作脚本和学习按键精灵的朋友可以添加按键精灵学习交流群:554127455 学习路上不再孤单,金猪脚本伴你一同成长.
什么是窗口句柄
想要理解句柄就得先知道窗口句柄的概念。我们先来看下度娘百科上的说法
在windows中,句柄是和对象一一对应的32位无符号整数值。对象可以映射到唯
一的句柄,句柄也可以映射到唯一的对象。
看了感觉很绕吧?其实说白了,每个窗口就相当于对应了一个身份证
每个窗口都对应唯一的一个句柄,不同窗口标题可能相同,但是他们的句柄ID绝对不同。
窗口句柄有以下特性:
1、一个窗口对应了唯一的句柄
2、一个窗口中可能包含了多个子窗口,每个子窗口也有对应的唯一的句柄。子窗口对应的上级窗口也被称为“父窗口”
3、窗口重启之后句柄就会发生变化
在平时的代码编写过程中对于窗口句柄的一些需要注意的,就是上面三个特性了。
一些新手在对窗口进行后台操作的时候无效,主要就是两点导致的,一个是窗口句柄找错了;第二点就是需要操作的对象是在某个子窗口句柄当中的,而他使用的句柄是父窗口的句柄,所以导致了操作失效。
下面就给大家详细说明下不同的找句柄的命令的使用技巧
找句柄技巧
在按键精灵自带的命令当中,我们通常会使用这几个命令来找句柄:Find(FindEx ) 命令、Search(SearchEx ) 命令、MousePoint 命令
有选择困难症的童鞋就会头疼了,这几个命令到底我要用哪个?别急,小编这里就给大家分析下每个命令
Find(FindEx ) 命令
命令名称Find命令功能查找窗口类名或者标题命令参数参数1 字符串型,窗口类名
参数2 字符串型,窗口标题
命令名称FindEx命令功能根据父窗口句柄查找子窗口匹配类名或者匹配标题命令参数参数1 整数型,父窗口句柄
参数2 整数型,子窗口句柄
参数3 字符串型,匹配类名
参数4 字符串型,匹配标题
使用Find命令会返回查找到符合条件的第一个窗口句柄,一般是用来查找当前只存在唯一一个的窗口,比如当前电脑上只开了一个记事本窗口,想要找到这个窗口的话就可以使用Find 命令。
使用技巧:Find 命令的标题名称或者类名参数填写0 的话就代表忽略这个参数,如果两个参数都填写0的话,那这个命令会返回桌面顶层窗口中找到的第一个窗口
PS:这个命令使用的是精确查找模式,所填写的标题或者类名必须要完全一致才能找到,比如查找记事本窗口
- Hwnd = Plugin.Window.Find(0, "无标题 - 记事本")
复制代码
- Hwnd = Plugin.Window.Find(0, "记事本")
复制代码
这两个命令前者可以正确找到记事本句柄,后者则不行,因为标题不完整。
Search(SearchEx )命令
命令名称Search命令功能遍历符合窗口标题的句柄保存到数值串里命令参数参数1 字符串型,窗口符合的标题
命令名称SearchEx命令功能遍历符合窗口标题的句柄保存到数值串里命令参数参数1 字符串型,窗口符合的类名
参数2 字符串型,窗口符合的标题
参数3 字符串型,搜索方式(0:模糊,1:精确)
Search 查找窗口句柄是会返回所有符合条件的句柄,一般是用于需要查找多窗口的情况,比如想要实现多开挂机,那就需要把当前的窗口都找到,就需要用到Search 或者 SearchEx 命令。
这个命令返回的结果是句柄字符串,每个句柄使用“|”符号连接,具体使用的时候需要单独把每个句柄提取出来
还是以获取记事本句柄为例子
- HwndEx = Plugin.Window.Search("记事本")
- Hwnd = split(HwndEx,"|")
- For i = 0 To UBound(Hwnd)-1
- TracePrint Hwnd(i)
- Next
复制代码
在使用这个命令的时候需要注意一点:命令返回的句柄字符串结尾处会跟着一个多余的 “|”符号,所以在使用for命令循环提取句柄的时候,要把循环的次数上限减1,否则提取的最后一个句柄就会是空的值。
MousePoint 命令
命令名称MousePoint命令功能得到鼠标指向的窗口句柄命令参数无
这个命令是获取到鼠标当前位置的窗口的句柄。这个命令相对上面的两个命令会比较特殊,他是可以直接获取到子窗口句柄的,而上面两个命令是只能获取到最外面的顶层父窗口句柄(FindEx 命令除外,他是可以指定在某个父窗口下查找子窗口句柄)
新手都很喜欢使用这个命令来获取句柄,因为他很简单易用,不需要多去了解窗口标题和类名。但是同时因为新手对于句柄了解不够,所以很容易出现问题。比如查找记事本句柄: