首页 » 其他 » 按键精灵实践

按键精灵实践

本文仅记录我在学习使用按键精灵实践的过程。实验结果按键精灵无法对directX程序按键取色,所以工作效果很不理想。按键精灵是一个用程序代替人工重复操作的工具,也可以在其他办公场所使用。

1、搜索句柄并前置窗口

最开始设想是让eve在后台一样可以工作,但是按键精灵采集后台程序像素颜色有问题,所以只能在让eve在前台工作才行。这里还是记录下获取程序句柄和使游戏到前台工作的方法,以备后用。

前台游戏这部分工作仍然不理想,现在需要将eve的窗口模式改为固定窗口。

//获取句柄
HwndEx = Plugin.Window.Search("EVE - ")
strlen = Len(HwndEX)-1
Hwnd = Left(HwndEX, strlen)

//前台游戏
Call Plugin.Window.Top(Hwnd, 0)
Call Plugin.Window.Top(Hwnd, 1)

2、检测装备是否开启

出站、跳矿带操作较简单,使用按键精灵中的录制即可实现。而检测装备是否开启需要采集屏幕某点的颜色,判断实现。

下图是eve界面中涉及到装备开关的部分。当装备开启时,该装备周围会闪烁绿光。这里使用按键精灵中全部命令里Color颜色插件的FindColor区域找色函数。在每个需要检测的装备上都定义一个如图中红色矩阵的检测区域,如果检测到指定的绿色,即说明装备开启。程序中f11~f14分别对应第一个装备的左上X、Y坐标和右下的X、Y坐标。函数中”4D7B56″为我采集的装备开启时图标周围闪烁的颜色。

坐标和颜色都可以使用按键精灵中的“抓抓”工具采集。

装备

代码如下

f11=1059
f12=910
f13=1084
f14=929
f21=1116
f22=910
f23=1160
f24=933

//检查是否有激活的装备
While 1
XY = Plugin.Color.FindColor(f11, f12, f13, f14, "4D7B56", 0, 0.9)
iZB = InStr(XY, "|")
X = CLng(Left(XY, iZB - 1))
Y = CLng(Right(XY, Len(XY) - iZB))
If XY <> "-1|-1" Then 
MessageBox "f1装备已激活" 
End If

XY = Plugin.Color.FindColor(f21, f22, f23, f24, "4D7B56", 0, 0.9)
iZB = InStr(XY, "|")
X = CLng(Left(XY, iZB - 1))
Y = CLng(Right(XY, Len(XY) - iZB))
If XY <> "-1|-1" Then 
MessageBox "f2装备已激活" 
End If
Wend

3、检测装备是否关闭并重启矿枪

相对于开启,检测关闭增加了超时检测,代码如下

f11=1059
f12=910
f13=1084
f14=929
f21=1116
f22=910
f23=1160
f24=933

check=100
getcolor1=0
getcolor2=0

//检查装备
While 1
For 30
XY = Plugin.Color.FindColor(f11, f12, f13, f14, "4D7B56", 0, 0.9)
iZB = InStr(XY, "|")
X = CLng(Left(XY, iZB - 1))
Y = CLng(Right(XY, Len(XY) - iZB))
If XY <> "-1|-1" Then 
getcolor1=1 
End If

XY = Plugin.Color.FindColor(f21, f22, f23, f24, "4D7B56", 0, 0.9)
iZB = InStr(XY, "|")
X = CLng(Left(XY, iZB - 1))
Y = CLng(Right(XY, Len(XY) - iZB))
If XY <> "-1|-1" Then 
getcolor2=1 
End If
Next

//装备未激活
If getcolor1 = 0 or getcolor2 = 0 Then 
MoveTo 1537, 260
Delay 50
LeftClick 1
Delay 50
If getcolor1 = 0
KeyPress "F1", 1
Else 
KeyPress "F2", 1
End If

Delay 50

MoveTo 1543, 303
Delay 50
KeyDown "Ctrl", 1
Delay 50
LeftClick 1
Delay 50
KeyUp "Ctrl", 1
End If

getcolor1 = 0
getcolor2 = 0

Wend

至此可以半手动挖矿。

标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注