Skip to content
On this page

DHZBOX模块

创建DHZ外设实例

lua
local dhzkm = newDHZBOX()

功能:创建一个与 DHZBOX 硬件通讯的实例,用于后续所有鼠标 / 键盘操作。

返回值dhzkm,DHZBOX 实例。

注意:所有后续 API 均需使用该实例调用。

示例

lua
local dhzkm = newDHZBOX()

初始化DHZBOX

初始化

lua
dhzkm:Init(ip, port, jm)

功能:连接DHZBOX。

参数

  • ip string 盒子 IP 地址。
  • port number UDP 端口。
  • jm number 加密随机因子(1–7)。

返回值boolean,true=成功, false=失败

示例

lua
local ok = dhzkm:Init("192.168.1.55", 9000, 3)  -- 仅第一次需要
if not ok then
    print("DHZBOX 连接失败!")
    return
end
print("DHZBOX 连接成功!")

相对移动鼠标

相对当前鼠标位置移动

lua
dhzkm:Mouse_MoreR(x, y)

功能:相对当前鼠标位置移动指定的 X 和 Y 距离。

参数

  • x number 鼠标在 X 轴上的相对移动距离。正数向右,负数向左。
  • y number 鼠标在 Y 轴上的相对移动距离。正数向下,负数向上。

返回值:无

示例

lua
dhzkm:Mouse_MoreR(100, 50)  -- 鼠标向右移动100像素,向下移动50像素
dhzkm:Mouse_MoreR(-20, -30) -- 鼠标向左移动20像素,向上移动30像素

鼠标点击

模拟鼠标按键动作

lua
dhzkm:Mouse_Click(button, press)

功能:模拟鼠标按键的按下或释放动作。

参数

  • button:整数,按钮编号(1=左键 2=右键 3=中键)
  • pressbooleantrue表示按下,false表示释放

示例

lua
-- 模拟左键点击(按下并释放)
dhzkm:Mouse_Click(1, true)
dhzkm:Mouse_Click(1, false)

异步鼠标点击

异步模拟鼠标点击动作

lua
dhzkm:Mouse_Click_Async(button, firstDelay, midDelay, waitDelay)

功能:在多线程中模拟完整的鼠标点击动作(按下-保持-释放)。

参数

  • button:整数,按钮编号(1=左键,2=右键 目前只支持左右键)
  • firstDelay:整数(可选),初次延迟(毫秒),默认0
  • midDelay:整数(可选),中间延迟(毫秒),默认30
  • waitDelay:整数(可选),收尾延迟(毫秒),默认0

示例

lua
-- 模拟带延迟的右键点击
dhzkm:Mouse_Click_Async(1, 100, 50, 100)

控制鼠标滚轮

控制鼠标滚轮滚动

lua
dhzkm:Mouse_Wheel(steps)

功能:控制鼠标滚轮向上或向下滚动指定的步数。

参数

  • steps number 滚动的步数。正数表示向上滚动(远离用户),负数表示向下滚动(靠近用户)。DHZBOX通常使用120的倍数作为单位。

返回值:无

示例

lua
dhzkm:Mouse_Wheel(120)  -- 鼠标滚轮向上滚动一格
dhzkm:Mouse_Wheel(-240) -- 鼠标滚轮向下滚动两格

鼠标综合控制

同时控制鼠标按键、移动和滚轮

lua
dhzkm:Mouse(button, x, y, w)

功能:在一个命令中同时控制鼠标的按键状态、相对移动和滚轮滚动。

参数

  • button number 按键的组合状态。这是一个位掩码,表示哪些按键被按下。
    • 1 = 左键
    • 2 = 右键
    • 4 = 中键
    • 8 = 侧键1
    • 16 = 侧键2
    • 可以通过 | 运算符组合,例如 1 | 2 表示左键和右键同时按下。
  • x number 鼠标在 X 轴上的相对移动距离。
  • y number 鼠标在 Y 轴上的相对移动距离。
  • w number 滚轮滚动距离。正数向上,负数向下。

返回值:无

注意:此函数可以将多个鼠标操作打包在一个 UDP 包中发送,提高效率。

示例

lua
-- 按下左键,同时鼠标向右移动50像素,向下移动20像素,滚轮向上滚动120步
dhzkm:Mouse(1, 50, -20, 120)

-- 释放所有按键,鼠标不移动,滚轮不滚动
dhzkm:Mouse(0, 0, 0, 0)

启动/停止状态监控

启动或停止从DHZBOX接收鼠标/键盘状态信息

lua
dhzkm:Monitor(port)

功能:启动一个后台线程,用于从DHZBOX接收实时的鼠标按键和键盘按键状态。传入 0 表示停止监控。

参数

  • port number 用于接收状态的本地 UDP 端口号。如果传入 0,则停止状态监控。

返回值:无

注意:状态查询(IsDownLeft 等函数)需要先通过此函数开启监控。

示例

lua
dhzkm:Monitor(9800) -- 启动状态监控,在本地9800端口接收数据
-- ... 可以在这里查询状态 ...
dhzkm:Monitor(0)    -- 停止状态监控

按下键盘按键

模拟键盘按键按下

lua
dhzkm:KeyDown(key_str)

功能:模拟指定键盘按键的按下动作。

参数

  • key_str string 按键的名称字符串。例如 "A", "enter", "space", "f1", "left" 等。具体支持的键名请参考DHZBOX的官方文档。

返回值:无

示例

lua
dhzkm:KeyDown("W")      -- 按下W键
dhzkm:KeyDown("space")  -- 按下空格键
dhzkm:KeyDown("ctrl")   -- 按下Ctrl键

释放键盘按键

模拟键盘按键释放

lua
dhzkm:KeyUp(key_str)

功能:模拟指定键盘按键的释放动作。

参数

  • key_str string 按键的名称字符串。与 KeyDown 支持的键名相同。

返回值:无

示例

lua
dhzkm:KeyUp("W")      -- 释放W键
dhzkm:KeyUp("space")  -- 释放空格键
dhzkm:KeyUp("ctrl")   -- 释放Ctrl键

查询鼠标左键状态

查询鼠标左键是否按下

lua
local state = dhzkm:Get_Mouse_Left()

功能:获取当前鼠标左键的按下状态。

参数:无

返回值booleantrue 表示鼠标左键当前按下,false 表示未按下。

注意:此函数需要先通过 Monitor 开启状态监控才能获取到实时数据。

示例

lua
-- 假设已开启监控 dhzkm:Monitor(9800)
if dhzkm:Get_Mouse_Left() then
    print("鼠标左键当前按下")
else
    print("鼠标左键当前未按下")
end

查询鼠标中键状态

查询鼠标中键是否按下

lua
local state = dhzkm:Get_Mouse_Middle()

功能:获取当前鼠标中键的按下状态。

参数:无

返回值booleantrue 表示鼠标中键当前按下,false 表示未按下。

注意:此函数需要先通过 Monitor 开启状态监控才能获取到实时数据。

示例

lua
-- 假设已开启监控 dhzkm:Monitor(9800)
if dhzkm:Get_Mouse_Middle() then
    print("鼠标中键当前按下")
end

查询鼠标右键状态

查询鼠标右键是否按下

lua
local state = dhzkm:Get_Mouse_Right()

功能:获取当前鼠标右键的按下状态。

参数:无

返回值booleantrue 表示鼠标右键当前按下,false 表示未按下。

注意:此函数需要先通过 Monitor 开启状态监控才能获取到实时数据。

示例

lua
-- 假设已开启监控 dhzkm:Monitor(9800)
if dhzkm:Get_Mouse_Right() then
    print("鼠标右键当前按下")
end

查询鼠标侧键1状态

查询鼠标侧键1是否按下

lua
local state = dhzkm:Get_Mouse_Side1()

功能:获取当前鼠标侧键1(通常是下侧键或前进键)的按下状态。

参数:无

返回值booleantrue 表示鼠标侧键1当前按下,false 表示未按下。

注意:此函数需要先通过 Monitor 开启状态监控才能获取到实时数据。

示例

lua
-- 假设已开启监控 dhzkm:Monitor(9800)
if dhzkm:Get_Mouse_Side1() then
    print("鼠标侧键1当前按下")
end

查询鼠标侧键2状态

查询鼠标侧键2是否按下

lua
local state = dhzkm:Get_Mouse_Side2()

功能:获取当前鼠标侧键2(通常是上侧键或后退键)的按下状态。

参数:无

返回值booleantrue 表示鼠标侧键2当前按下,false 表示未按下。

注意:此函数需要先通过 Monitor 开启状态监控才能获取到实时数据。

示例

lua
-- 假设已开启监控 dhzkm:Monitor(9800)
if dhzkm:Get_Mouse_Side2() then
    print("鼠标侧键2当前按下")
end

查询当前按下的键盘按键

查询当前按下的键盘按键名称

lua
local key_name = dhzkm:Isdown()

功能:获取当前按下的键盘按键的名称字符串。如果同时按下多个按键,可能只返回其中一个,或者返回组合字符串(具体取决于DHZBOX的实现)。

参数:无

返回值string,当前按下的键盘按键名称。如果没有按键按下,返回空字符串 ""

注意:此函数需要先通过 Monitor 开启状态监控才能获取到实时数据。

示例

lua
-- 假设已开启监控 dhzkm:Monitor(9800)
local current_key = dhzkm:Isdown()
if current_key ~= "" then
    print("当前按下的键是: " .. current_key)
else
    print("没有键盘按键按下")
end

屏蔽/解除鼠标左键

屏蔽或解除鼠标左键事件

lua
dhzkm:Mask_left(state)

功能:控制DHZBOX是否将鼠标左键的物理点击事件传递给操作系统。当屏蔽时,即使物理按下左键,操作系统也接收不到该事件。

参数

  • state number 屏蔽状态。1 表示屏蔽,0 表示解除屏蔽。

返回值:无

示例

lua
dhzkm:Mask_left(1) -- 屏蔽鼠标左键
-- 此时物理点击左键不会有反应
dhzkm:Mask_left(0) -- 解除鼠标左键屏蔽

屏蔽/解除鼠标右键

屏蔽或解除鼠标右键事件

lua
dhzkm:Mask_right(state)

功能:控制DHZBOX是否将鼠标右键的物理点击事件传递给操作系统。

参数

  • state number 屏蔽状态。1 表示屏蔽,0 表示解除屏蔽。

返回值:无

示例

lua
dhzkm:Mask_right(1) -- 屏蔽鼠标右键

屏蔽/解除鼠标中键

屏蔽或解除鼠标中键事件

lua
dhzkm:Mask_middle(state)

功能:控制DHZBOX是否将鼠标中键的物理点击事件传递给操作系统。

参数

  • state number 屏蔽状态。1 表示屏蔽,0 表示解除屏蔽。

返回值:无

示例

lua
dhzkm:Mask_middle(1) -- 屏蔽鼠标中键

屏蔽/解除鼠标侧键1

屏蔽或解除鼠标侧键1事件

lua
dhzkm:Mask_side1(state)

功能:控制DHZBOX是否将鼠标侧键1的物理点击事件传递给操作系统。

参数

  • state number 屏蔽状态。1 表示屏蔽,0 表示解除屏蔽。

返回值:无

示例

lua
dhzkm:Mask_side1(1) -- 屏蔽鼠标侧键1

屏蔽/解除鼠标侧键2

屏蔽或解除鼠标侧键2事件

lua
dhzkm:Mask_side2(state)

功能:控制DHZBOX是否将鼠标侧键2的物理点击事件传递给操作系统。

参数

  • state number 屏蔽状态。1 表示屏蔽,0 表示解除屏蔽。

返回值:无

示例

lua
dhzkm:Mask_side2(1) -- 屏蔽鼠标侧键2

解除键盘按键屏蔽

解除指定键盘按键的屏蔽

lua
dhzkm:DisMask_keyboard(key_str)

功能:允许DHZBOX将指定键盘按键的物理事件重新传递给操作系统。这通常用于解除先前通过其他方式(例如DHZBOX内部配置或特定模式)对某个按键的屏蔽。

参数

  • key_str string 要解除屏蔽的按键名称字符串。例如 "A", "enter", "space" 等。

返回值:无

注意:此函数是解除屏蔽。如果需要屏蔽键盘按键,请查阅DHZBOX的整体键盘屏蔽功能或相关文档。

示例

lua
-- 假设'A'键被DHZBOX屏蔽了
dhzkm:DisMask_keyboard("A") -- 解除'A'键的屏蔽