- 按键认证大神
- 728264
- 3502
- 18
- 1899 朵
- 27454 个
- 1718 个
- 82980
- 2011-08-04
|
1#
t
T
发表于 2022-04-26 12:58
|
|只看楼主
什么是窗口坐标范围?即进行键鼠、图色操作时,窗口内鼠标可移动单击、找图、找色的坐标范围。窗口组成:由上图可知,窗口由窗口边框和窗口客户区组成,窗口边框大小加上窗口客户区大小即为窗口大小。一般我们平时说的窗口分辨率,即是指的窗口客户区大小。若窗口无边框,则窗口大小等于窗口客户区大小。由于电脑主题不同的情况下,窗口边框大小是不固定的,而窗口客户区大小则不会变,所以我们一般在执行键鼠、图色操作时,通常会选择以窗口客户区的起点作为操作的起点。我们还需要知道的是坐标是从0开始计算的,所以窗口客户区的坐标范围实际为0,0,(客户区宽-1),(客户区高-1)。鼠标操作、取色操作时,坐标是一组,即x和y。而找图、找色时,坐标是两组,即x1,y1,x2,y2。所以窗口鼠标操作、取色的最小坐标为0,0,最大坐标为(客户区宽-1),(客户区高-1),而找图和找色,最小坐标范围则为0,0,1,1,最大坐标范围为0,0,客户区宽,客户区高。因为图片的尺寸至少为1X1的缘故,若找图、找色最小范围为0,0,0,0,将是错误的。事实上将0,0,1,1这个范围进行截图,你也会发现,图片中只包含0,0这一个坐标点的颜色。另外需要注意的是,按键精灵自带的找图功能,在查找图片的时候虽然找图范围可以等于图片尺寸,但部分第三方插件的找图范围必须大于图片尺寸。为了保险起见,在找图的时候图片最大尺寸应当小于客户区大小。获取窗口客户区信息:- Dim hwnd, 窗口客户区信息, 起点x, 起点y, 客户区宽, 客户区高
- hwnd = 597910 '指定窗口句柄
- 窗口客户区信息 = 获取窗口客户区信息(hwnd)
- 起点x = 窗口客户区信息(0)
- 起点y = 窗口客户区信息(1)
- 客户区宽 = 窗口客户区信息(2)
- 客户区高 = 窗口客户区信息(3)
- Function 获取窗口客户区信息(hwnd)
- Dim ret
- ret = Plugin.Window.GetClientRect(Hwnd)
- ret = Split(ret, "|")
- 获取窗口客户区信息 = Array(CInt(ret(0)), CInt(ret(1)), CInt(ret(2)), CInt(ret(3)))
- End Function
复制代码 窗口内鼠标操作代码:- MoveTo 起点x, 起点y'鼠标移动至窗口客户区左上角
- MoveTo 起点x + 客户区宽 - 1, 起点y + 客户区高 - 1'鼠标移动至窗口客户区右下角
复制代码 窗口内取色操作代码:- Dim x, y
- For x = 起点x To 起点x + 客户区宽 - 1
- For y = 起点y To 起点y + 客户区高 - 1
- TracePrint GetPixelColor(x, y) '取色打印
- Next
- Next
复制代码 窗口内找色操作代码:- TracePrint Plugin.ColorEx.FindColor(起点x, 起点y, 起点x + 客户区宽, 起点y + 客户区高, "0000FF", 0.9, 0) '查找指定颜色
复制代码 窗口内找图操作代码:- TracePrint Plugin.ColorEx.FindPic(起点x, 起点y, 起点x + 客户区宽, 起点y + 客户区高, "神盾.bmp", 0.9, 0)'查找指定图片
复制代码
|