杰瑞科技汇

按键精灵大漠插件怎么用?

按键精灵大漠插件使用教程

目录

  1. 第一部分:准备工作

    • 什么是大漠插件?
    • 为什么使用大漠插件?
    • 环境配置:安装按键精灵和大漠插件
    • 第一个脚本:如何启动大漠插件并绑定窗口
  2. 第二部分:核心概念与基础命令

    • dm.SetPath:设置插件路径(必须)
    • dm.Bind:绑定目标窗口(必须)
    • dm_ret = dm.Ocr:文字识别(核心功能)
    • dm_ret = dm.FindPic:图片查找(核心功能)
    • 坐标系统:屏幕坐标 vs 窗口坐标
  3. 第三部分:实战演练

    • 简单的文字识别与点击

      目标:识别窗口中的“开始游戏”文字并点击它。

    • 图片查找与鼠标操作

      目标:在窗口中查找一张“登录”按钮的图片,找到后点击。

    • 组合应用:找图后找字

      目标:先找到某个图标,然后在该图标附近寻找特定文字。

  4. 第四部分:进阶技巧与常用命令

    • 图色命令:FindPic, FindStr, FindStrFast, FindColor
    • 鼠标命令:MoveTo, LeftClick, RightClick, Drag
    • 键盘命令:KeyPress, SendString
    • 窗口命令:FindWindow, GetWindowRect
    • 高级技巧:使用pic参数、模糊识别、区域截图
  5. 第五部分:调试与排错

    • TracePrint:你的好朋友
    • 常见错误及解决方案
    • 如何优化脚本性能

第一部分:准备工作

什么是大漠插件?

大漠插件(dm.dll)是一个第三方插件,它为按键精灵提供了强大的图色识别能力,按键精灵自身只能模拟鼠标键盘,无法“看”到屏幕上有什么,而大漠插件就像给按键精灵装上了一双眼睛,让它能够:

  • 识别文字:在指定区域内查找特定的文字。
  • 识别图片:在指定区域内查找一张图片(截图)。
  • 识别颜色:在指定坐标查找特定颜色。
  • 获取窗口信息:获取窗口句柄、大小、位置等。

没有大漠插件,按键精灵就是个“盲人”操作员;有了它,就成了一个“眼明手快”的操作员。

为什么使用大漠插件?

  • 高稳定性:基于图色识别,不依赖窗口的标题或类名,即使窗口被遮挡或最小化后还原,也能稳定识别。
  • 通用性强:适用于几乎所有游戏和应用,无论是窗口化还是全屏。
  • 功能强大:支持文字、图片、颜色等多种识别方式,能满足绝大多数自动化需求。

环境配置

  1. 下载软件
    • 按键精灵:从官网下载并安装最新版。
    • 大漠插件:从大漠官网下载最新版的 dm.dll 文件。
  2. 放置插件
    • 将下载的 dm.dll 文件复制到按键精灵的插件目录中。
    • 路径通常是:X:\Program Files (x86)\按键精灵\plugin (X为你的安装盘符)。
  3. 在按键精灵中加载插件
    • 打开按键精灵编辑器。
    • 点击顶部菜单的 “插件” -> “插件管理”
    • 在列表中找到 “大漠”,确保它被勾选,如果没有,点击“添加”并找到 dm.dll 文件。
    • 确认后,大漠插件就已经成功加载了。

第一个脚本:启动并绑定窗口

这是所有大漠脚本的第一步,也是必须的一步

// 1. 设置大漠插件所在路径
// 注意:如果你的dm.dll在plugin目录下,这步可以省略,但为了通用性,建议加上。
dm.SetPath "plugin\dm.dll" 
// 2. 查找并绑定目标窗口
// 假设我们要绑定的窗口标题是“我的游戏”
hwnd = dm.FindWindow("", "我的游戏")
// 3. 检查是否成功绑定
If hwnd = 0 Then
    TracePrint "错误:找不到窗口标题为'我的游戏'的窗口!脚本退出。"
    // 使用 ExitScript 语句可以立即停止脚本运行
    ExitScript 
Else
    TracePrint "成功找到窗口,句柄为:" & hwnd
    // 使用 dm.Bind 绑定窗口,后续所有操作都基于这个窗口
    dm.Bind hwnd 
    TracePrint "窗口绑定成功!"
End If
// ... 在这里添加你的自动化代码 ...
TracePrint "脚本执行完毕!"

解释

  • dm.SetPath:告诉按键精灵去哪里找 dm.dll
  • dm.FindWindow("", "窗口标题"):通过窗口标题来查找窗口,第一个参数是窗口类名,一般不用可以留空。
  • hwnd:返回的是窗口的唯一标识符(句柄)。
  • If hwnd = 0 Then ... Else ...:判断是否找到窗口,如果没找到就报错并退出,这是良好的编程习惯。
  • dm.Bind hwnd至关重要的一步,将我们的操作锁定到这个窗口上,这样后续的坐标、截图等操作才不会出错。

第二部分:核心概念与基础命令

dm.SetPath:设置插件路径

如上所述,必须在使用任何大漠命令前执行。

dm.Bind:绑定目标窗口

同样,在执行图色识别前必须绑定窗口。

dm_ret = dm.Ocr:文字识别

这是识别文字的核心命令。

语法result = dm.Ocr(x1, y1, x2, y2, "字库文件路径", "匹配选项")

  • x1, y1, x2, y2:识别的矩形区域坐标(左上角和右下角)。
  • "字库文件路径":大漠需要知道你要识别哪些字,你需要创建一个字库文件(通常是 .ch.rec 文件)。
  • "匹配选项""0" 表示精确匹配,"1" 表示模糊匹配。

返回值result 是一个字符串,格式为:x,y,识别出的文字,如果找不到,则返回空字符串。

如何创建字库? 按键精灵自带了“字库管理器”。

  1. 在按键精灵编辑器中,点击 “工具” -> “字库管理器”
  2. 点击“新建”。
  3. 使用鼠标在屏幕上拖动,框选你想要识别的文字,或者手动输入文字。
  4. 保存字库文件,myfont.ch

dm_ret = dm.FindPic:图片查找

这是识别图片的核心命令,也是最常用的。

语法result = dm.FindPic(x1, y1, x2, y2, "图片文件路径", "偏差值", "指定颜色")

  • x1, y1, x2, y2:查找的区域。
  • "图片文件路径":你要查找的图片(截图),通常是 .bmp.png 格式。
  • "偏差值":颜色匹配的容差。"0" 是完全匹配,"1000" 是最大偏差,一般设置为 "0""10"
  • "指定颜色":高级用法,可以只查找图片中特定颜色的部分,通常留空 。

返回值result 是一个字符串,格式为:x,y,如果找不到,则返回 -1,-1

坐标系统

  • 屏幕坐标:相对于整个屏幕左上角 (0,0) 的坐标。
  • 窗口坐标:相对于窗口客户区左上角 (0,0) 的坐标。

当你使用 dm.Bind 绑定窗口后,所有的大漠图色命令(如 FindPic, Ocr)默认使用窗口坐标,这非常方便,因为窗口移动或分辨率改变时,脚本依然有效。


第三部分:实战演练

简单的文字识别与点击

目标:识别窗口中的“开始游戏”文字,然后点击它。

// 准备工作
dm.SetPath "plugin\dm.dll"
hwnd = dm.FindWindow("", "我的游戏")
If hwnd = 0 Then ExitScript
dm.Bind hwnd
// 假设我们创建的字库文件是 myfont.ch,存放在脚本同目录
fontPath = ThisScriptPath & "myfont.ch"
// 1. 在窗口内识别文字
// 假设“开始游戏”按钮在窗口中央区域 (100,100,500,300)
ret = dm.Ocr(100, 100, 500, 300, fontPath, "0")
// 2. 判断是否识别成功
If ret <> "" Then
    // ret 的格式是 "x,y,开始游戏"
    // 使用 Split 函数分割字符串,获取坐标
    pos = Split(ret, ",")
    click_x = pos(0)
    click_y = pos(1)
    TracePrint "找到文字'开始游戏',坐标为:" & click_x & ", " & click_y
    // 3. 移动鼠标并点击
    dm.MoveTo click_x, click_y
    dm.LeftClick 1
    TracePrint "已点击'开始游戏'按钮。"
Else
    TracePrint "未找到'开始游戏'文字。"
End If

图片查找与鼠标操作

目标:查找一张“登录”按钮的图片并点击。

// 准备工作
dm.SetPath "plugin\dm.dll"
hwnd = dm.FindWindow("", "我的游戏")
If hwnd = 0 Then ExitScript
dm.Bind hwnd
// 1. 定义要查找的图片路径
// 假设你用截图工具截取了“登录”按钮的图片,保存为 login.bmp
picPath = ThisScriptPath & "login.bmp"
// 2. 在整个窗口内查找图片
// 使用 dm.GetWindowRect 获取窗口的实际坐标范围
rect = dm.GetWindow(hwnd)
window_rect = Split(rect, "|")
x1 = window_rect(0)
y1 = window_rect(1)
x2 = window_rect(2)
y2 = window_rect(3)
ret = dm.FindPic(x1, y1, x2, y2, picPath, "0", "")
// 3. 判断是否找到
If ret <> "-1,-1" Then
    // ret 的格式是 "x,y"
    pos = Split(ret, ",")
    click_x = pos(0)
    click_y = pos(1)
    TracePrint "找到'登录'按钮图片,坐标为:" & click_x & ", " & click_y
    // 4. 点击
    dm.MoveTo click_x, click_y
    dm.LeftClick 1
    TracePrint "已点击'登录'按钮。"
Else
    TracePrint "未找到'登录'按钮图片。"
End If

组合应用:找图后找字

目标:先找到“角色列表”的图标,然后在该图标下方寻找“战士”这个文字。

// 准备工作
dm.SetPath "plugin\dm.dll"
hwnd = dm.FindWindow("", "我的游戏")
If hwnd = 0 Then ExitScript
dm.Bind hwnd
// 字库和图片路径
fontPath = ThisScriptPath & "myfont.ch"
iconPath = ThisScriptPath & "icon_rolelist.bmp"
// 1. 先找到“角色列表”图标
ret = dm.FindPic(0, 0, 1024, 768, iconPath, "0", "")
If ret <> "-1,-1" Then
    pos = Split(ret, ",")
    icon_x = pos(0)
    icon_y = pos(1)
    TracePrint "找到'角色列表'图标,坐标:" & icon_x & ", " & icon_y
    // 2. 定义在图标下方寻找文字的区域
    // 假设文字在图标下方 20 到 120 像素的范围内
    search_x1 = icon_x - 50
    search_y1 = icon_y + 20
    search_x2 = icon_x + 50
    search_y2 = icon_y + 120
    // 3. 在该区域内寻找“战士”
    ret_text = dm.Ocr(search_x1, search_y1, search_x2, search_y2, fontPath, "0")
    If InStr(ret_text, "战士") > 0 Then
        TracePrint "在'角色列表'图标下方找到了'战士'!"
        // ... 可以在这里添加点击“战士”的操作 ...
    Else
        TracePrint "未找到'战士'。"
    End If
Else
    TracePrint "未找到'角色列表'图标,无法继续。"
End If

第四部分:进阶技巧与常用命令

  • FindStrFast:比 Ocr 速度更快,但识别率稍低,适合对速度要求高,文字比较规整的场景。
  • FindColor / FindColorMulti:用于查找特定颜色,常用于识别血条、蓝条等。
  • GetColor:获取指定坐标点的颜色值,可用于判断或校验。
  • dm.MoveTo, dm.LeftClick, dm.RightClick:鼠标移动和点击。
  • dm.KeyPress:模拟按键,dm.KeyPress "A"dm.SendString "Hello" 用于输入一串文字。
  • dm.GetWindowRect(hwnd):获取窗口的屏幕坐标,用于确定查找范围。
  • dm.Capture:截取窗口或屏幕的图片并保存,方便制作查找用的素材。
  • pic 参数:在 FindPic 中,可以指定只查找图片中非透明色的部分,大大提高准确率。dm.FindPic(..., "000000", "0", "000000") 表示只查找图片中黑色背景的部分。

第五部分:调试与排错

TracePrint:你的好朋友

在脚本的任何地方使用 TracePrint "你想输出的信息",信息会显示在按键精灵的调试窗口中,这是定位问题、查看变量值、理解脚本执行流程的最重要工具。

常见错误及解决方案

  • 错误1:-1 或空字符串

    • 原因FindPicOcr 没有找到目标。
    • 解决方案
      1. 区域是否正确?TracePrint 输出你的查找区域坐标,确保它覆盖了目标。
      2. 素材是否正确?
        • 图片:截图是否干净?是否包含了太多背景?可以尝试使用 pic 参数,图片的缩放比例是否和游戏里的一致?
        • 文字:字库是否包含了你要识别的文字?游戏中的字体是否特殊(如艺术字)导致识别率低?
      3. 偏差值是否太小? 尝试将 FindPic 的偏差值从 "0" 调整到 "10" 或更高。
      4. 窗口是否正确? 确保你已经成功 Bind 了正确的窗口。
  • 错误2:点击位置不准确

    • 原因:识别出的坐标点不是你想要点击的位置。
    • 解决方案
      1. 使用 TracePrint 输出识别出的坐标,然后用鼠标移动到那个位置看是否正确。
      2. 图片识别的坐标通常是图片的左上角,如果你希望点击图片中心,可以在代码中加上偏移量:x + 图片宽度/2, y + 图片高度/2
  • 错误3:脚本运行慢

    • 原因:查找区域过大,或者使用了较慢的识别方法(如 Ocr)。
    • 解决方案
      1. 缩小查找区域:尽量精确地定义你需要查找的小范围。
      2. 使用更快的命令:能用 FindPic 就不用 Ocr,能用 FindStrFast 就不用 Ocr
      3. 增加延时:在循环中适当加入 Delay 100 (延时100毫秒),避免CPU占用过高。

如何优化脚本性能

  1. 精确查找区域:这是最重要的优化。
  2. 使用高精度截图:截图时关闭不必要的特效,保证截图清晰。
  3. 合理安排逻辑顺序:先找大范围的、容易找到的东西,再在其附近找小范围的、难找的东西,先找到主界面,再在主界面里找按钮。
  4. 利用循环和判断:让脚本更智能,而不是死板的“执行-等待-执行”。

大漠插件是按键精灵的灵魂,掌握它的核心在于:

  1. 绑定窗口:一切操作的前提。
  2. 理解坐标:知道你在哪里找。
  3. 用好素材:高质量的截图和字库是成功的关键。
  4. 勤用调试TracePrint 是你最好的朋友。

多练习,多尝试,从简单的找图、找字开始,逐步组合成复杂的自动化流程,祝你玩得开心!

分享:
扫描分享到社交APP
上一篇
下一篇