首先先提一些bug:
按键精灵带界面的控件中在加入一些delay的属性时,在调试时会卡死,但在正常运行时没毛病,踩坑1
按键精灵带界面的控件中在加入循环的时间时,按f12无法终止循环,踩坑2
下便是一些一些常用操作
关于定位窗口
//窗口类名,通过抓抓能获取,得到句柄
Hwnd = Plugin.Window.Find("WeChatMainWndForPC", 0)
//跳转到句柄窗口
Call Plugin.Window.Active(Hwnd)
关于识图点击,首先需要下载人家兄弟工程的插件,之后代码如下
//范围 截图位置 1代表从下往上找,0.8是相似度
XY = Plugin.Pic.FindPic(513, 532, 1057, 1063, "D:\按键找图\创建.bmp", 1, 0.8)
iZB = InStr(XY, "|")
X = CLng(Left(XY, iZB - 1))
Y = CLng(Right(XY, Len(XY) - iZB))
MoveTo X, Y
LeftClick 1
Delay 1000
获取窗口坐标
Rect = Plugin.Window.GetWindowRect(Hwnd)
MyArray = Split(Rect, "|")
x = Clng(MyArray(0))
y = Clng(MyArray(1))//这里的(x,y)是窗口包含边框的左上角坐标,可用后台操作
Rect = Plugin.Window.GetClientRect(Hwnd)
MyArray = Split(Rect, "|")
x = Clng(MyArray(0))
y = Clng(MyArray(1))//这里的(x,y)是窗口不含边框(称为客户区)的左上角坐标
MoveTo x,y
后台操作鼠标点击,不影响你的操作
//这里的坐标是相对于Hwnd这个窗口的坐标
Hwnd = Plugin.Window.Find("AppletPanelWnd", 0)//获取句柄
Call Plugin.Bkgnd.LeftClick(Hwnd, 55, 120)
关于获取层级子窗口句柄及获取隐藏子窗口句柄的使用
先导入361度插件,再利用361度的抓抓工具代码如下
//获取父窗口句柄
//第一参数是窗口标题名,其余填0即可,最后一项的参数为16的话,抓取的子窗口全都是可见的,若为0的话,可抓取到隐藏子窗口
HwndArrayF = Plugin.WindowEx5_01.EnumWindowT("微软听听文档",0,0,0,16)
TracePrint HwndArrayF(0)
第一参数是父窗口句柄,第二参数是子窗口标题名,第三参数是窗子口类名,
HwndArrayC=Plugin.WindowEx5_01.EnumWindowA(HwndArrayF(0),"Chrome Legacy Window","Chrome_RenderWidgetHostHWND",16)
TracePrint HwndArrayC(0)
一般若碰到类名标题相同的情况,直接所有的都进行相同的操在这里插入代码片
作比如
- 一个父窗口下有多个类名和标题名,相同的子窗口,我想执行其中一个子窗口的点击事件,但有这么多的子窗口,我需要进行判断,这时候该怎么办呢?
- 可以子窗口直接全部执行一遍点击,代码如下,就不用考虑判断的问题啦
HwndArrayC = Plugin.WindowEx5_01.EnumWindowA(HwndArrayF(0), "Chrome Legacy Window", "Chrome_RenderWidgetHostHWND", 16)
Call Plugin.Bkgnd.LeftClick(HwndArrayC(0), 130, 610)
Call Plugin.Bkgnd.LeftClick(HwndArrayC(1), 130, 610)
1. 关于后台传输字符串的问题 通过句柄传递字符串的方式不管用,需先激活窗口,再输入ctrl键(随便一个无用的键),之后再输入文本内容
代码如下
Text = Plugin.File.ReadFileEx("D:\360MoveData\Users\疯子似的少年\Desktop\自媒体\content.txt")
Call Plugin.Window.Active(hwnddrag)
KeyPress "Ctrl", 1
Call Plugin.Bkgnd.SendString(hwnddrag, Text)