按键精灵(大漠插件)识别屏幕上的文字

一、注册大漠插件

1)首先下载按键精灵,新建一个脚本。

2)下载大漠插件,如下为安装目录

3)将dm.all,RegDll.dll拖到附件中,注册大漠插件

//释放“附件”中自己添加的文件到c:\dm目录中,释放Regdll.dll到plugin目录中
PutAttachment "c:\dm", "*.*"
PutAttachment ".\plugin", "Regdll.dll"

//调用regdll.dll,注册大漠插件
Call Plugin.Regdll.reg("c:\dm\dm.dll")

//创建一个大漠对象
Set dm = createobject("dm.dmsoft")

//检查是否创建成功
ver = dm.ver()
If len(ver) = 0 Then
	MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
	EndScript
Else
	MessageBox "插件注册成功,当前使用的版本是:"&ver
End If

二、制作字库

打开大漠综合工具,如下图所示

1)点击抓图,截取要做成字库的文字

2)多点找色,通过选取截图上不同颜色的点,使二值化区域窗口能够成功显示目标文字

3)点击提取点阵(单个),使下方空白区域显示目标文字

4)点击提取点阵(多个),设置合适的行列间距,定义文字,回车,点击新建字库建立新的字库或者点击编辑字库修改已有字库。

5)点击按钮可以拷贝相应的代码。

三、文字识别

1)将上一步制作的字库拖入到附件中。

2)查找文字所在坐标的代码。

//释放“附件”中自己添加的文件到c:\dm目录中,释放Regdll.dll到plugin目录中
PutAttachment "c:\dm", "*.*"
PutAttachment ".\plugin", "Regdll.dll"

//调用regdll.dll,注册大漠插件
Call Plugin.Regdll.reg("c:\dm\dm.dll")

//以下为第5步中通过点击FindStr拷贝的代码
set dm = createobject("dm.dmsoft")
base_path = dm.GetBasePath()
dm_ret = dm.SetPath(base_path)
dm_ret = dm.SetDict(0,"w4.txt")  //设置字库
dm_ret = dm.FindStr(668,738,689,763,"上","4f4f76-000000|4f4f4f-000000|d1974f-000000|b57676-000000|4f76b5-000000|764f4f-000000",1.0,intX,intY)  //"上"为需要识别的文字

//坐标,为-1表示没有找到
TracePrint intX
TracePrint intY
TracePrint dm_ret

3)识别文字的代码

//释放“附件”中自己添加的文件到c:\dm目录中,释放Regdll.dll到plugin目录中
PutAttachment "c:\dm", "*.*"
PutAttachment ".\plugin", "Regdll.dll"

//调用regdll.dll,注册大漠插件
Call Plugin.Regdll.reg("c:\dm\dm.dll")

//创建一个大漠对象
Set dm = createobject("dm.dmsoft")

Call dm.SetPath(dm.GetBasePath())
Call dm.SetDict(0, "w4.txt") //设置0号字库
Dim wenzi

// GetStr(), 第一个参数表示几号字库,2-5个参数表示识别范围,最后一个参数通过多点找色获得(可以通过第5步中点击FindStr拷贝)
wenzi = GetStr(0, 0, 0, Plugin.Sys.GetScRX , Plugin.Sys.GetScRY , "4f4f76-000000|4f4f4f-000000|d1974f-000000|b57676-000000|4f76b5-000000|764f4f-000000")

TracePrint "识别到的信息:" & wenzi

EndScript


Function GetStr(dic, a, b, c, d, col)'范围获取所有字库可识别字符,返回信息看大漠说明
	dm.UseDict dic'选择字库,当前为0号字库
	Dim temp_txt, temp_number, temp
	temp_txt = dm.GetWords(a, b, c, d, col, 1.0)'x|y|str   识别这个范围内所有满足条件的词组
	
	TracePrint temp_txt
	
	If temp_txt = "" Then 
		GetStr = temp_txt
		Exit Function
	End If
	temp_number = dm.GetWordResultCount(temp_txt)
	TracePrint temp_number
	
	For i = 0 To temp_number - 1
		dm_ret = dm.GetWordResultPos(temp_txt, i, intX, intY)'获得该数字确切坐标
		If i = 0 Then 
			GetStr = dm.GetWordResultStr(temp_txt, i)
		Else 
			GetStr = GetStr & "|" & dm.GetWordResultStr(temp_txt, i)
		End If
	Next
	If GetStr <> vbNullString Then 
		dm.GetWordResultPos temp_txt, 0, intX, intY'获取第一段字符坐标
	Else 
		intX = - 1  : intY = - 1 
	End If
End Function

 

 

  • 12
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值