简介

无涯键鼠盒子是模拟键盘鼠标操作的硬件，电脑上的软件给它发操作指令，它按照指令进行键盘鼠标操作。

无涯键鼠盒子基础版只有一个USB口，适用于电脑的自我操作。无涯键鼠盒子基础版有稳压芯片、ESD保护，提高了产品的稳定性和使用寿命。支持修改USB接口信息，支持更新固件。

无涯键鼠盒子配套的操作模块无论键盘鼠标点击还是鼠标移动、鼠标滚轮滚动都高度模拟手动操作，支持系统dpi缩放和多显示器。

操作系统支持：windows7及以后的操作系统（包括32位操作系统和64位操作系统）

调用软件支持：支持32位和64位软件调用

作者：

网名：361度
QQ交流群：78281374（验证信息：hkm）


在windows系统中，当文档内容的文字大小不合适阅读时，可以将鼠标移到内容上，用“Ctrl键+鼠标滚轮滚动”进行缩放。


使用方法

使用说明

无涯键鼠盒子通过调用wyhkm.dll模块控制，支持windows7及以后的操作系统。对wyhkm.dll的调用支持标准dll接口和com接口。wyhkm.dll模块有32位和64位两种，32位程序调用32位模块，64位程序调用64位模块。

标准dll接口的调用和系统API一样，这里就不说明了。

com接口和常规的com接口的dll一样，调用本模块也是先注册，再创建对象。

COM接口调用

1.注册：

注册有两种方法：常规注册方法、进程内注册方法。常规注册方法会写注册表，可能导致安全软件报警或者被检测。进程内注册方法不写注册表，没有这些问题，但是只在当前进程有效，新的进程要重新注册。

1)常规注册方法：在同一台电脑上，模块文件或者路径不变化时，只要注册一次即可。
注册本模块可使用regsvr32命令，也可以直接调用本模块的DllRegisterServer接口。
注册本模块的vbs例子如下(管理员权限)：
Set wshshell = CreateObject("wscript.shell")
wshshell.run "regsvr32 /s ""D:\Plugin\wyhkm.dll"""
无管理员权限注册模块的例子如下：
Set wshshell = CreateObject("wscript.shell")
wshshell.run "regsvr32 /s /n /i:user ""D:\Plugin\wyhkm.dll"""

注意：如果在64位系统中使用的是32位模块，双击直接运行vbs文件是用64位脚本执行器执行，会导致失败。运行C:\Windows\SysWOW64\cmd.exe，再到其中运行vbs就能正常调用模块了。

2)进程内注册方法：调用模块的DllInstall导出函数，第一个参数传入32位整型数1，第二个参数传入32/64位整型数2(32位模块中是32位整型数，64位模块中是64位整型数)。返回值大于等于0时注册成功。vbs不支持直接调用dll的导出函数，这里就不给例子了。

2.创建对象：

模块中的函数使用前，先创建对象，再使用对象调用函数。
创建本模块的对象的vbs例子如下：
Set wyhkm=CreateObject("wyp.hkm")

调用函数的完整例子（不包含注册）：
Set wyhkm=CreateObject("wyp.hkm")
ver = wyhkm.GetVersion()
MsgBox "模块版本：" & Hex(ver), 4096


提高手动操作模拟度的说明

无涯键鼠盒子模块的默认设置多数是模拟手动操作的，但有些设置因为某些原因没有按照手动操作的行为进行设置，如果要高度模仿手动操作，需要修改设置，需修改的设置如下：
    1.设置鼠标坐标最大偏移函数HKMSetMousePosMaxOffset和SetMousePosMaxOffset，默认是最大偏移量为0（无偏移），但鼠标移动时，不可能每次都精确移动到同一个坐标，所以要设置成在指定点附近的随机坐标,这个随机坐标要与指定点之间有最大偏移量，比如3，但具体是多少要根据实际情况确定，设置太小就不像真实情况，设置太大又有可能超出目标范围。
    2.键盘鼠标点击、鼠标移动、鼠标滚轮等操作后到下次操作之间要有个延时，这个延时要用随机延时，随机延时函数是HKMDelayRnd和DelayRnd。不同操作的延时最小值是不同，比如键盘鼠标连续点击相同的键的延时最小值根据我的测试在100毫秒附近，连续点击不同的键时，这个值大一点，大概是130毫秒。不同键盘鼠标和人，这个最小值可能有差异，所以这是个参考值。
    3.输出字符串的模式的设置函数是HKMSetMode和SetMode，默认设置是0，这个模式和1模式受各种干扰影响小些，但2模式和3模式在输入半角数字、字母、部分字符时和手动输入一样。
    4.盒子的VID出厂值不是键盘鼠标厂的，有的会检测这个，所以建议修改成真实键盘或鼠标厂的值，可以使用“无涯键鼠盒子修改器”修改。详情可以看设置硬件信息的说明。


调整键盘鼠标操作速度的方法

影响键盘鼠标操作速度的已知因素如下：

1.鼠标和键盘按键延时影响，可以使用HKMSetKeyInterval、SetKeyInterval、HKMSetMouseInterval、SetMouseInterval函数修改。

2.鼠标移动速度设置影响，可以使用HKMSetMouseSpeed、SetMouseSpeed函数修改。

3.鼠标移动模式设置影响，可以使用HKMSetMode、SetMode函数修改。

4.报告间隔时间影响，报告间隔时间可以用“无涯键鼠盒子修改器”修改（无涯键鼠盒子基础版一代固件从1.10开始才支持，版本低的需要此功能可以自己升级固件）。

5.CPU使用率太高时也会影响速度。

6.在虚拟机中速度会慢很多。


在VMWare虚拟机中使用的方法

VMWare虚拟机不同版本可能有些差异，这里以VMWare 14为例。

1.虚拟机设置

VMWare默认不显示键盘鼠标的连接项,这样无法连接盒子,开启方法如下:

1)设置时，VMWare界面中，需要连接盒子的虚拟机要在未启动的状态，如果启动了先把它关闭。

2)在VMWare界面中，选中需要连接盒子的虚拟机，然后在VMWare菜单中选择：虚拟机->设置，在弹出的“虚拟机设置”对话框中的“硬件”选项卡中，在左边选择“USB控制器”，选中右边的“显示所有USB输入设备”复选框，再点击对话框下面的“确定”按钮。

经过这些设置，VMWare虚拟机支持连接盒子了，但是虚拟机启动后如果没有自动连接盒子，还需要手动把它连接上，方法如下：

1）启动虚拟机

2)在VMWare界面中，选中需要连接盒子的虚拟机，然后在VMWare菜单中选择：虚拟机->可移动设备->盒子的产品名称->连接(断开与 主机 的连接)。盒子的产品名称可以用配套的工具查看。

2.操作盒子

无涯键鼠盒子可以在虚拟机中操作盒子控制虚拟机中的键盘鼠标，也可以在主机中操作盒子控制虚拟机中的键盘鼠标。

2.1虚拟机中操作

虚拟机内操作除了前面的设置，其它和主机中使用盒子控制主机中的键盘鼠标相同，这里就不作说明了。

2.2主机中操作

主机中操作盒子控制虚拟机中的键盘鼠标时，除了鼠标移动不一样，其它操作和主机中使用盒子控制主机中的键盘鼠标相同。鼠标移动到指定坐标要使用绝对鼠标(只有相对移动时不需要绝对鼠标)，无涯键鼠盒子基础版一代固件1.2.0版才开始支持绝对鼠标，绝对鼠标默认未开启，可使用盒子的配套工具开启，调用模块时，需要使用HKMSetMode或SetMode函数开启绝对鼠标移动模式，还需要使用HKMSetAbsMouseScrnRes或SetAbsMouseScrnRes函数设置屏幕分辩率，虚拟机中的屏幕分辨率是多少，就设置为多少，否则鼠标移动的坐标会不准确。


打开设备时会创建进程的说明

无涯键鼠盒子模块使用打开设备的函数时，可能会创建进程，进程名是CheckZoom*.exe，这个进程用于获取DPI有关的信息。获取的DPI信息用于鼠标移动和获取鼠标坐标的函数，其它函数不受影响。不是所有情况都会创建这个进程，下面说明不创建进程的几种常见情况，满足其中任意一条就不会创建进程：
    1.WIN10较新的版本。只有几个很老的WIN10版本会创建进程，其他都不会。
    2.WIN8.1以前的系统，DPI当前上下文是系统感知的时候，打开设备函数的参数中，DPI模式使用系统DPI感知或每个显示器DPI感知；WIN8.1及WIN8.1以后的系统，DPI当前上下文是每个显示器DPI感知的时候，打开设备函数的参数中，DPI模式使用每个显示器DPI感知。
    3.打开设备函数的参数中，DPI模式使用“DPI不可用”时。如果要鼠标移动和获取鼠标坐标的函数能正常工作，这个模式是有限制的，具体可以看打开设备的函数说明。


DPI简介

DPI是图像每英寸长度内的像素点数。本说明文件里的提到的DPI都是显示器DPI，不是鼠标DPI，不要弄混了。改变DPI可以缩放应用程序的窗口。windows系统中显示器DPI可以自己设置，在“屏幕分辨率”或“显示设置”里可以找到它的设置，不同系统中这个设置的说法有点差异，例如：WIN7中是“放大或缩小文本和其它项目”，WIN10中是“更改文本、应用等项目的大小”（WIN10各版本有差异，有些版本可能不一样）。

windows为了兼容老程序，DPI有多种设置，WIN8.1以前有“无DPI感知”和“系统DPI感知”两种，WIN8.1开始因为支持多显示器不同DPI，又增加了“每个显示器DPI感知”。不同DPI感知的坐标是不同的。每个进程可以单独设置自己的DPI感知上下文，在WIN10中甚至可以每个线程设置不同的DPI感知上下文。

“无DPI感知”：这是为了兼容不支持DPI缩放的程序，系统自动帮它处理程序窗口缩放文件，但处理得很差，显示器DPI不是100%时界面文字会模糊，且与屏幕有关的API坐标与显示器像素不是一一对应关系。

“系统DPI感知”：在WIN8.1以前，与屏幕有关的API坐标与显示器像素是一一对应关系，从WIN8.1开始，如果其它显示器与主显示器DPI不同，程序窗口在其它显示器中会变模糊，且与屏幕有关的API坐标在其它显示器中像素不是一一对应关系。

“每个显示器DPI感知”：与屏幕有关的API坐标与显示器像素是总是一一对应关系。

当显示器DPI都是100%时，几种DPI感知的上文中，与屏幕有关的API坐标与显示器像素都是一一对应关系。


创建对象失败

1.检查注册dll是否成功，创建对象失败多数是注册dll的问题，可参考注册dll失败的解决方法。

2.检查注册的dll文件是32位还是64位文件，这个要与调用它的程序相同，与系统无关。

3.检测dll文件是否在C盘，C盘很多文件夹因为权限问题会有各种限制，而且容易引起安全软件的报警或拦截，这些原因容易导致dll注册或加载失败，所以不推荐放C盘。


电脑USB插口不够用

这个对熟悉电脑外设的人不用说明，但是还是有些人不知道，这里介绍一下。可以使用usb hub（也叫usb集线器），这是扩展usb插口的外设，盒子可以插在上面使用，卖电脑外设的店铺和网上很多购物平台都有卖。注意有一种与usb hub外形相似，但只能用于充电，这种不能用在这里。盒子基础版的功耗很低，如果usb hub上不接功耗较大的usb设备，只要不是在usb hub上插了几十个盒子，对usb hub是否需要外接电源没有特别要求。


调用模块中的函数时报堆栈错误

1.检查dll版本是否正确，不同版本的dll有些参数数量有时会增减，这通常发生在dll主版本号变化时。

2.检查函数声明是否正确，主要检查参数类型与参数数量，比如常见64位整形数与32位整形数弄错误了。


使用windows远程桌面时无效

根据需求，这要分两种情况说明：

1.想给远程桌面本身的操作使用盒子。这个需要远程桌面支持盒子，一般是不支持的。如果觉得自己编程技术好，可以尝试制作自己的远程桌面并在其中调用盒子操作键盘鼠标。

2.使用远程桌面查看另一台电脑上操作盒子的软件工作情况。这个是可以实现的。常见出现的不工作的问题是因为使用了windows自带的远程桌面，windows自带的远程桌面只允许一个用户访问，远程登录了，本机就会无法操作。解决方法是使用第三方的远程桌面软件。


是否需要注册dll文件

本模块支持com接口和标准dll接口(与系统API是同类接口)，使用com接口函数需要注册，使用标准dll接口函数不用注册。


鼠标移动模式如何设置

鼠标移动模式通过HKMSetMode或SetMode函数设置，在属性值为2时，模式值设置鼠标移动模式，可对HKMMoveTo、HKMMoveR、HKMoveR2、MoveTo、MoveR、MoveR2起作用，对HKMMoveRP、MoveRP无效果。鼠标移动模式的模式值的具体值对应的说明可以看HKMSetMode或SetMode的函数说，注意这个值可以是一个也可以是多个值的组合（位或运算），下面介绍几个常用值或其组合值：

1.默认值是0，没有使用HKMSetMode或SetMode函数设置鼠标移动模式时就是这个值，有曲线轨迹移动和启停时加减速。

2.鼠标移动无曲线和加减速，不模拟人工移动，只追求速度。使用模式值5(这是1快速移动模式和4基础移动模式的组合)。要注意的是：使用这个值时，如果要使用HKMMoveTo、HKMoveR2、MoveTo、MoveR2时坐标正确，只能在鼠标没使用“提高指针精确度”且“选择指针移动速度”在中间（物理鼠标相对移动坐标和屏幕坐标的比例是1:1）时使用，如果是win10，屏幕Dpi要是100%。

3.鼠标移动有曲线但无加减速。使用模式值12(这是4基础移动模式和8匀速模式的组合)或20(这是4基础移动模式和16定速模式的组合)，匀速模式和定速模式的区别可以看HKMSetMode或SetMode函数的说明。要注意的是：使用这个值时，如果要使用HKMMoveTo、HKMoveR2、MoveTo、MoveR2时如果要坐标正确，只能在鼠标没使用“提高指针精确度”且“选择指针移动速度”在中间（物理鼠标相对移动坐标和屏幕坐标的比例是1:1）时使用，如果是win10，屏幕Dpi要是100%。

4.绝对鼠标移动（配合“无涯键鼠盒子修改器”设置绝对鼠标使用），使用模式值2（绝对鼠标移动），使用绝对鼠标必须使用HKMSetMode或SetMode函数设置鼠标移动模式为绝对鼠标移动模式才能使用HKMMoveTo、HKMoveR2、MoveTo、MoveR2。绝对鼠标移动可以与其它模式组合使用。如果修改器设置的是“绝对鼠标”而不是“相对鼠标+绝对鼠标”，HKMMoveR和MoveR无效果，HKMMoveR2和MoveR2可用。


相对鼠标、相对移动、绝对鼠标、绝对移动的区别

相对鼠标和绝对鼠标是鼠标硬件移动鼠标坐标的方式，一般真实鼠标都是相对鼠标，目前没见过真实鼠标有绝对鼠标功能。无涯键鼠盒子修改器可以修改这个模式。

相对移动和绝对移动是函数功能。绝对移动的坐标是鼠标移动到指定的屏幕坐标。相对移动的坐标是鼠标移动后屏幕坐标与鼠标移动前屏幕坐标的差值，如果限制了鼠标移动范围，会导致实际移动值变小甚至不变。相对鼠标和相对移动、绝对鼠标和绝对移动没有必然关系。相对鼠标可以实现绝对移动，绝对鼠标可以实现相对移动。


找不到dll文件或函数

1.检查dll文件是否放好或者程序中的dll文件路径是否正确。如果只使用dll文件名，多数情况可以放在程序所在文件夹路径下。

2.检查dll文件是否正确。32位程序调用32位的dll文件，64位程序调用64位的dll文件，不是与系统相同。易语言、按键精灵、TC都是32位程序，它们生成的小程序也是32位的。

3.检查函数中的函数名是否正确。常见字母错误或者多了空格。


注册dll失败

1.检查dll文件路径是否正确。

2.如果用regsvr32注册，要注意调用的regsvr32程序是32位还是64位的，这要与被注册的dll相同。32位系统中的regsvr32是32位的。64位系统中regsvr32有32位和64位，它们在不同文件夹中，32位的regsvr32通常在“C:\Windows\SysWow64”文件夹中，64位的regsvr32通常在“C:\Windows\Sytem32”文件夹中。


HKMCheckPressedKeys

名称 | HKMCheckPressedKeys 检查按键
功能 | 检查键盘、鼠标的哪些键被按下。在程序运行前，可能有些键盘或者鼠标的键因某种原因被按下未弹起，有的从物理上看弹起了，实际在逻辑上并未弹起。这样会影响后面的键盘、鼠标操作，所有最好先检查一下。
参数 参数1　模式：无符号32位整型数。用于设置这个函数的工作方式。取值可以是下面的一个或多个，不用时可取0。如果要同时使用多个值，可将多个值做或运算。可取值：
值 | 说明
1 | 返回的字符串包含中文的信息，否则是全英文的信息
2 | 返回的字符串包含被按下的鼠标键信息，否则只包含被按下的键盘键
4 | 返回的字符串是Ansi编码，默认是Unicode编码
参数2　字符串长度：无符号32位整型数指针。用于接收返回值为非NULL时，返回字符串的字符数，不包括字符串结束符'\0'。不需要时可以取值为NULL。
返回值 | 字符串(Unicode/Ansi)。如果未检测到有被按下的键，返回“OK”字符串；如果检测到有被按下的键，返回被按下的键的信息；如果失败，返回NULL。当不再使用这个字符串时，使用HKMFreeData释放字符串所占用的资源。
C语言
例子 		LPWSTR lpStr;
setlocale(LC_ALL,"chs");//printf输出中文Unicode字符要这样设置才能正常显示
lpStr=HKMCheckPressedKeys(1,NULL);
if(lpStr==NULL)
{
printf("按键检查失败\n");
return 0;
}
if(!wcscmp(lpStr,L"OK"))
{
printf("检查到%S被按下，可能是按下未弹起或者键盘故障，这会影响键盘鼠标操作，为了恢复它们，请尝试重新点击这些按键！\n");
HKMFreeData(lpStr);
return 0;
}
HKMFreeData(lpStr);


HKMClose

名称 | HKMClose 关闭设备
功能 | 关闭无涯键鼠盒子，不对它进行操作时，使用此函数关闭设备对象，用来释放它占用的资源。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
//执行操作
HKMClose(lpDev);


HKMDelayRnd

名称 | HKMDelayRnd 随机延时
功能 | 在一个设定的时间范围内随机延时。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　最短时间：无符号32位整型数。单位毫秒。
参数3　最长时间：无符号32位整型数。单位毫秒。最长时间等于最短时间时，时间间隔是固定值。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMLeftDown(lpDev);
HKMDelayRnd(lpDev,90,120);
HKMLeftUp(lpDev);
HKMClose(lpDev);


HKMEnableOSMouseAccelerate

名称 | HKMEnableOSMouseAccelerate 启停系统鼠标加速
功能 | 开启或停止系统的鼠标加速功能。系统的鼠标加速功能在系统设置中的名称是“提高指针精确度”，默认是开启的。它会让物理鼠标移动快的时候在系统中更快，物理鼠标移动慢的时候在系统中更慢，导致物理鼠标和系统中的鼠标移动距离不是固定的比例。
参数 | 参数1 是否开启：布尔值。取TRUE时，开启系统鼠标加速；取FALSE时，停止系统鼠标加速。 参数2 是否保存：布尔值。取TRUE时，系统重启后仍然有效；取FALSE时，系统重启后恢复设置。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言 例子 | HKMEnableOSMouseAccelerate(FALSE,FALSE);


HKMFreeData

名称 | HKMFreeData 释放数据
功能 | 释放数据，用来释放一些函数传出的数据占用的资源。相关函数：HKMSearchDeviceAll、HKMCheckPressedKeys。
参数 | 参数1　数据地址：无类型指针。使用HKMSearchDeviceAll、HKMCheckPressedKeys可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		LPWSTR lpStr;
lpStr=HKMCheckPressedKeys(1);
//执行操作
HKMFreeData(lpStr);


HKMGetCursorPos

名称 | HKMGetCursorPos 获得鼠标坐标
功能 | 获得操作系统桌面中的鼠标坐标。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　横坐标：32位整型数指针。用于接收鼠标横坐标。
参数3　纵坐标：32位整型数指针。用于接收鼠标纵坐标。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
long x,y;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
if(!HKMGetCursorPos(lpDev,&x,&y))
{
printf("获得鼠标坐标失败\n");
return 0;
}
printf("鼠标坐标：%d，%d%s\n",x,y);
HKMClose(lpDev);


HKMGetCursorPos2

名称 | HKMGetCursorPos2 获得鼠标坐标
功能 | 获得操作系统桌面中的鼠标坐标。功能与HKMGetCursorPos完全相同，只是为了解决部分语言不支持参数传址的问题。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 无符号32位整型数。低16位是横坐标，高16位是纵坐标。
C语言
例子 		DWORD dwDevId,dwPos;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
dwPos=HKMGetCursorPos2(lpDev);
printf("鼠标坐标：%d，%d%s\n",(long)(short)dwPos,(long)(short)(dwPos>>16));
HKMClose(lpDev);


HKMGetDataCount

名称 | HKMGetDataCount 获得数据数量
功能 | 获得数据数组的元素数量。相关函数：HKMSearchDeviceAll、HKMCheckPressedKeys。
参数 | 参数1　数据地址：无类型指针。使用HKMSearchDeviceAll、HKMCheckPressedKeys可以创建它。
返回值 | 无符号32位整型数。成功返回数据数组的元素数量，失败返回0xFFFFFFFF。
C语言
例子 		LPDWORD pDevId;
DWORD dwCount,i;
pDevId=HKMSearchDeviceAll(0x1234,0xABCD,0);
if(pDevId==NULL)
{
printf("查找设备失败\n");
return 0;
}
dwCount=HKMGetDataCount(pDevId);
printf("找到的设备数量:%u\n",dwCount);
HKMFreeData(pDevId);


HKMGetDataUnitInt

名称 | HKMGetDataUnitInt 获得数据单元整数值
功能 | 获得数据数组的元素的整数值。相关函数：HKMSearchDeviceAll、HKMCheckPressedKeys。
参数 参数1　数据地址：无类型指针。使用HKMSearchDeviceAll、HKMCheckPressedKeys可以创建它。
参数2　序号：无符号32位整型数。在数组中元素的序号，可以叫数组元素下标，第一个元素序号是0。
返回值 | 无符号32位整型数。成功返回数据数组的整数值，失败返回0。
C语言
例子 		LPDWORD pDevId;
DWORD dwCount,i;
pDevId=HKMSearchDeviceAll(0x1234,0xABCD,0);
if(pDevId==NULL)
{
printf("查找设备失败\n");
return 0;
}
dwCount=HKMGetDataCount(pDevId);
printf("找到的设备数量:%u\n",dwCount);
for(i=0;i<dwCount;i++)
{
printf("%08X\n",HKMGetDataUnitInt(pDevId,i));
}
HKMFreeData(pDevId);


HKMGetDevInfo

名称 | HKMGetDevInfo 获得设备信息
功能 | 获得无涯键鼠盒子的设备信息。无涯键鼠盒子基础版一代不支持此函数。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　序号：无符号32位整型数。需要获取的信息的序号。可取值如下：
序号 | 说明
1 | 设备类型。无涯键鼠盒子基础版一代返回1，无涯键鼠盒子基础版二代返回2。
2 | 固件版本。返回值中，0-15位是修订号，16-23位是副版本号，24-31位是主版本号。
3 | 运行时间。返回值是从通电或者复位开始运行的毫秒数，断电和复位都会归零。系统休眠时不计时。这个时间精度不高，有误差。
4 | 通电时间。返回值是从通电开始运行的毫秒数，断电会归零，复位不会归零。系统休眠时不计时。这个时间精度不高，有误差。
6 | 复位次数。
7 | 运行状态。设备未连接返回0xFFFFFFFF，设备准备中返回0，正常工作状态返回1，编辑状态返回2，禁止操作状态返回3。
8 | USB设备接口的VID值。
9 | USB设备接口的PID值。
10 | USB设备接口的设备版本值。
参数3　是否鼠标：布尔值。取FALSE时，自动获得设备信息，如果同时有键盘模式或者鼠标模式的设备，获得键盘模式的设备信息。取TRUE时，自动获得设备信息，如果同时有键盘模式或者鼠标模式的设备，获得鼠标模式的设备信息。
返回值 | 无符号32位整型数。返回值由参数2决定。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
printf("无涯键鼠盒子固件版本号：%08X\n",HKMGetDevInfo(lpDev,2,FALSE));
HKMClose(lpDev);


HKMGetDevString

名称 | HKMGetDevString 获得设备字符串
功能 | 获得设备相关的字符串。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　序号：无符号32位整型数。需要获取的字符串的序号。可取值如下：
值 | 说明
1 | 制造商
2 | 产品名
参数3　是否鼠标：布尔值。取false时，自动获得设备字符串，如果同时有键盘模式或者鼠标模式的设备，获得键盘模式的设备字符串。取true时，自动获得设备字符串，如果同时有键盘模式或者鼠标模式的设备，获得鼠标模式的设备字符串。
参数4　字符串长度：无符号32位整型数指针。用于接收返回值为非NULL时，返回字符串的字符数，不包括字符串结束符'\0'。不需要时可以取值为NULL。
返回值 | 字符串(Unicode/Ansi)。失败返回NULL，成功返回字符串地址。默认是Unicode字符串，可以通过HKMSetMode修改为Ansi字符串。字符串保存在设备对象的临时数据区中，无需单独释放，但是需要将内容尽快读出，防止被其它使用临时数据区的函数将数据改写了。
C语言
例子 		DWORD dwDevId,;
LPVOID lpDev;
LPWSTR lpStr;
setlocale(LC_ALL,"chs");//printf输出中文Unicode字符要这样设置才能正常显示
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
lpStr=HKMGetString(lpDev,1,false);
if(lpStr!=NULL)
printf("制造商：%S\n",lpStr);
HKMClose(lpDev);


HKMGetError

名称 | HKMGetError 获得错误代码
功能 | 获得错误代码。如果要获得错误代码在设备对象有关函数执行后立刻执行该函数，执行其它设备对象有关函数会覆盖之前的值。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 无符号32位整型数。低16位是错误代码，高16位是错误编号。错误代码中，0是成功，低于57344是系统错误代码，与系统API“GetLastError”获得的值相同，具体值的解释可以在微软网站查看，高于或等于57344的错误代码如下：
值 | 说明 | 值 | 说明
0000(0) | 成功 | E020(57376) | 打开设备失败
E001(57345) | 失败 | E021(57377) | 通信失败
E002(57346) | 无效的参数 | E022(57378) | 无访问权限
E003(57347) | 无效的指针 | E023(57379) | 超时
E004(57348) | 无效的对象 | E024(57380) | 运行应用失败
E005(57349) | 无效的初始化值 | E025(57381) | 超出限制
E006(57350) | 无效的数据 | E026(57382) | 获取DPI信息失败
E007(57351) | 数据太大 | E027(57383) | 获取数据失败
E008(57352) | 字符串太长 | E028(57384) | 设备失败
E009(57353) | 数据区域太小 | E029(57385) | 设备超时
E00A(57354) | 不支持 |  |
E00B(57355) | 对象已存在 |  |
E00C(57356) | 系统错误 |  |
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
printf("错误代码:%04X\n",HKMGetError(lpDev) & 0xFFFF);
HKMClose(lpDev);


HKMGetKeyboardLEDState

名称 | HKMGetKeyboardLEDState 获得键盘LED灯状态
功能 | 获得键盘Num Lock、Caps Lock、Scroll Lock灯的状态。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　键盘灯：无符号32位整型数。可取值如下：
值 | 说明
0 | Num Lock灯
1 | Caps Lock灯
2 | Scroll Lock灯
返回值 | 布尔值。灯亮返回TRUE，灯灭返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
printf("NumLock灯%s\n",HKMGetKeyboardLEDState(lpDev,0)?"亮":"灭");
HKMClose(lpDev);


HKMGetKeyboardMode

名称 | HKMGetKeyboardMode 获得键盘模式
功能 | 获得无涯键鼠盒子的键盘模式。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0才支持此函数。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 无符号32位整型数。键盘模式，失败返回0xFFFFFFFF，成功返回值如下：
值 | 说明
0 | 无键盘
1 | 普通键盘
5 | 游戏键盘
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
printf("键盘模式：%u\n",HKMGetKeyboardMode(lpDev));
HKMClose(lpDev);


HKMGetMouseMode

名称 | HKMGetMouseMode 获得鼠标模式
功能 | 获得无涯键鼠盒子的鼠标模式。无涯键鼠盒子基础版一代的固件版本大于等于1.2.0才支持此函数。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 无符号32位整型数。鼠标模式，失败返回0xFFFFFFFF，成功返回值如下：
值 | 说明
0 | 无鼠标
1 | 相对坐标鼠标
2 | 绝对坐标鼠标
3 | 相对坐标鼠标+绝对坐标鼠标
5 | 相对坐标游戏鼠标
7 | 相对坐标游戏鼠标+绝对坐标鼠标
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
printf("鼠标模式：%u\n",HKMGetMouseMode(lpDev));
HKMClose(lpDev);


HKMGetOSMouseSpeed

名称 | HKMGetOSMouseSpeed 获得系统鼠标速度
功能 | 获得系统鼠标速度。系统的鼠标速度在系统设置中的名称是“选择指针移动速度”。它设置的是物理鼠标移动速度与系统中移动速度的比例。
参数 |
返回值 | 32位整型数。成功时，这个值的范围是1-20，值越大，在系统中的速度越快，系统的默认值是10；失败返回0。
C语言 例子 | printf("系统鼠标速度：%d\n",HKMGetOSMouseSpeed());


HKMGetSerialNumber

名称 | HKMGetSerialNumber 获得序列号
功能 | 获得无涯键鼠盒子的序列号。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　是否鼠标：布尔值。取FALSE时，自动获得设备序列号，如果同时有键盘模式或者鼠标模式的设备，获得键盘模式的设备序列号。取TRUE时，自动获得设备序列号，如果同时有键盘模式或者鼠标模式的设备，获得鼠标模式的设备序列号。
返回值 | 无符号32位整型数。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
printf("无涯键鼠盒子序列号：%08X\n",HKMGetSerialNumber(lpDev,FALSE));
HKMClose(lpDev);


HKMGetVersion

名称 | HKMGetVersion 获得当前模块版本
功能 | 获得当前模块版本。
参数 |
返回值 | 无符号32位整型数。0-15位是修订号，16-23位是副版本号，24-31位是主版本号。
C语言 例子 | printf("版本号：%08X\n",HKMGetVersion());


HKMIsKeyBusy

名称 | HKMIsKeyBusy 判断键盘是否繁忙
功能 | 判断无涯键鼠盒子的键盘是否繁忙。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。繁忙返回TRUE，空闲返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
printf("无涯键鼠盒子键盘%s\n",HKMIsKeyBusy(lpDev)?"繁忙":"空闲");
HKMClose(lpDev);


HKMIsKeyDown

名称 | HKMIsKeyDown 判断键盘是否按下
功能 | 判断无涯键鼠盒子的键盘的键是否按下。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　键名：字符串(Unicode/Ansi)或者无符号32/64位整型数(32位模块中是32位整型数，64位模块中是64位整型数)。按键名使用字符串(默认是Unicode字符串，可以通过HKMSetMode修改为Ansi字符串)，按键码使用无符号32/64位整型数。按键码和按键名可查看虚拟键码表。
返回值 | 布尔值。按下返回TRUE，没按下或者失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMKeyDown(lpDev,L"Alt");
printf("Alt键状态:%d\n",HKMIsKeyDown(lpDev,L"Alt"));
HKMDelayRnd(lpDev,90,120);
HKMKeyUp(lpDev,L"Alt");
printf("Alt键状态:%d\n",HKMIsKeyDown(lpDev,L"Alt"));
HKMClose(lpDev);


HKMIsMouseBusy

名称 | HKMIsMouseBusy 判断鼠标是否繁忙
功能 | 判断无涯键鼠盒子的鼠标是否繁忙。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。繁忙返回TRUE，空闲返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
printf("无涯键鼠盒子鼠标%s\n",HKMIsMouseBusy(lpDev)?"繁忙":"空闲");
HKMClose(lpDev);


HKMIsMouseButtonDown

名称 | HKMIsMouseButtonDown 判断鼠标键是否按下
功能 | 判断无涯键鼠盒子的鼠标的键是否按下。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　鼠标键：32位无符号整型数。可取值如下。
鼠标键 | 说明
0 | 鼠标左键
1 | 鼠标右键
2 | 鼠标中键
返回值 | 布尔值。按下返回TRUE，没按下或者失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMLeftDown(lpDev);
printf("鼠标左键状态:%d\n",HKMIsMouseButtonDown(lpDev,0));
HKMDelayRnd(lpDev,90,120);
HKMLeftUp(lpDev);
printf("鼠标左键状态:%d\n",HKMIsMouseButtonDown(lpDev,0));
HKMClose(lpDev);


HKMIsOpen

名称 | HKMIsOpen 判断设备是否打开
功能 | 判断设备是否已经用Open打开。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　方法：无符号32位整型数。取值可以是下面的一个或多个。如果要同时使用多个值，可将多个值做或运算。可取值：
值 | 说明
0 | 判断设备是否被打开（键鼠、键盘或鼠标模式的设备都可以，不可与其它值同时使用）
1 | 判断键盘是否被打开（键鼠或者键盘模式的设备）
2 | 判断鼠标是否被打开（键鼠或者鼠标模式的设备）
返回值 | 布尔值。已打开返回TRUE，未打开返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
if(HKMIsOpen(lpDev,0))
printf("无涯键鼠盒子已打开");
else
printf("无涯键鼠盒子未打开");
HKMClose(lpDev);


HKMIsOSMouseAccelerateEnabled

名称 | HKMIsOSMouseAccelerateEnabled 判断是否开启系统鼠标加速
功能 | 判断是否开启系统的鼠标加速功能。系统的鼠标加速功能在系统设置中的名称是“提高指针精确度”，默认是开启的。它会让物理鼠标移动快的时候在系统中更快，物理鼠标移动慢的时候在系统中更慢，导致物理鼠标和系统中的鼠标移动距离不是固定的比例。
参数
返回值 | 布尔值。已开启系统鼠标加速返回TRUE，未开启系统鼠标加速返回FALSE。
C语言
例子 		if(HKMIsOSMouseAccelerateEnabled())
printf("已开启系统鼠标鼠标加速\n");
else
printf("未开启系统鼠标鼠标加速\n");


HKMKeyDown

名称 | HKMKeyDown 键盘按下
功能 | 键盘的键按下。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　键名：字符串(Unicode/Ansi)或者无符号32/64位整型数(32位模块中是32位整型数，64位模块中是64位整型数)。按键名使用字符串(默认是Unicode字符串，可以通过HKMSetMode修改为Ansi字符串)，按键码使用无符号32/64位整型数。按键码和按键名可查看虚拟键码表。字符串支持组合键，组合键的按键名用“+”连接，例如：“Ctrl+C”。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMKeyDown(lpDev,L"F1");
HKMDelayRnd(lpDev,90,120);
HKMKeyUp(lpDev,L"F1");
HKMClose(lpDev);


HKMKeyPress

名称 | HKMKeyPress 键盘按键
功能 | 键盘的键按下再弹起。设置键盘按下和弹起时间间隔使用HKMSetKeyInterval。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　键名：字符串(Unicode/Ansi)或者无符号32/64位整型数(32位模块中是32位整型数，64位模块中是64位整型数)。按键名使用字符串(默认是Unicode字符串，可以通过HKMSetMode修改为Ansi字符串)，按键码使用无符号32/64位整型数。按键码和按键名可查看虚拟键码表。字符串支持组合键，组合键的按键名用“+”连接，例如：“Ctrl+C”。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMKeyPress(lpDev,L"F1");
HKMClose(lpDev);


HKMKeyUp

名称 | HKMKeyUp 键盘弹起
功能 | 键盘的键弹起。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　键名：字符串(Unicode/Ansi)或者无符号32/64位整型数(32位模块中是32位整型数，64位模块中是64位整型数)。按键名使用字符串(默认是Unicode字符串，可以通过HKMSetMode修改为Ansi字符串)，按键码使用无符号32/64位整型数。按键码和按键名可查看虚拟键码表。字符串支持组合键，组合键的按键名用“+”连接，例如：“Ctrl+C”。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMKeyDown(lpDev,L"F1");
HKMDelayRnd(lpDev,90,120);
HKMKeyUp(lpDev,L"F1");
HKMClose(lpDev);


HKMLeftClick

名称 | HKMLeftClick 鼠标左键单击
功能 | 鼠标左键单击。设置鼠标键按下和弹起时间间隔使用HKMSetMouseInterval。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMLeftClick(lpDev);
HKMClose(lpDev);


HKMLeftDoubleClick

名称 | HKMLeftDoubleClick 鼠标左键双击
功能 | 鼠标左键双击。设置鼠标键按下和弹起时间间隔使用HKMSetMouseInterval。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMLeftDoubleClick(lpDev);
HKMClose(lpDev);


HKMLeftDown

名称 | HKMLeftDown 鼠标左键按下
功能 | 鼠标左键按下。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMLeftDown(lpDev);
HKMDelayRnd(lpDev,90,120);
HKMLeftUp(lpDev);
HKMClose(lpDev);


HKMLeftUp

名称 | HKMLeftUp 鼠标左键弹起
功能 | 鼠标左键弹起。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMLeftDown(lpDev);
HKMDelayRnd(lpDev,90,120);
HKMLeftUp(lpDev);
HKMClose(lpDev);


HKMMiddleClick

名称 | HKMMiddleClick 鼠标中键单击
功能 | 鼠标中键单击。设置鼠标键按下和弹起时间间隔使用HKMSetMouseInterval。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMMiddleClick(lpDev);
HKMClose(lpDev);


HKMMiddleDoubleClick

名称 | HKMMiddleDoubleClick 鼠标中键双击
功能 | 鼠标中键双击。设置鼠标键按下和弹起时间间隔使用HKMSetMouseInterval。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMMiddleDoubleClick(lpDev);
HKMClose(lpDev);


HKMMiddleDown

名称 | HKMMiddleDown 鼠标中键按下
功能 | 鼠标中键按下。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMMiddleDown(lpDev);
HKMDelayRnd(lpDev,90,120);
HKMMiddleUp(lpDev);
HKMClose(lpDev);


HKMMiddleUp

名称 | HKMMiddleUp 鼠标中键弹起
功能 | 鼠标中键弹起。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMMiddleDown(lpDev);
HKMDelayRnd(lpDev,90,120);
HKMMiddleUp(lpDev);
HKMClose(lpDev);


HKMMouseWheel

名称 | HKMMouseWheel 鼠标滚轮
功能 | 鼠标滚轮滚动。相关的设置函数：HKMSetMode。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　滚动次数：32位整型数。滚动次数是滚轮滚动格数，向上滚动是正数，向下滚动是负数。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMMouseWheel(lpDev,3);
HKMClose(lpDev);


HKMMouseWheelP

名称 | HKMMouseWheelP 鼠标滚轮
功能 | 鼠标底层的滚轮滚动。这个是USB鼠标底层的一次滚轮滚动。滚动一次最大的次数是127(手动操作最大次数参考值是3)。用于给使用者自己实现完整的鼠标滚轮滚动。相关的设置函数：HKMSetMode。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　滚动次数：32位整型数。滚动次数是滚轮滚动格数，向上滚动是正数，向下滚动是负数。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMMouseWheelP(lpDev,3);
HKMClose(lpDev);


HKMMoveR

名称 | HKMMoveR 鼠标相对移动
功能 | 鼠标相对移动。此移动距离是鼠标的物理相对移动，操作系统中默认使用了鼠标加速，所以实际移动距离和屏幕坐标的移动距离不同。而且受系统鼠标加速算法影响，相对移动坐标相同时，鼠标移动的距离也不是固定的。可关闭系统鼠标加速(提高指针精确度)解决鼠标相对移动不准的问题。相关的设置函数：HKMSetMode。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　横坐标：32位整型数。鼠标相对移动的横坐标。
参数3　纵坐标：32位整型数。鼠标相对移动的纵坐标。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMMoveR(lpDev,100,50);
HKMClose(lpDev);


HKMMoveR2

名称 | HKMMoveR2 鼠标相对移动
功能 | 鼠标相对移动。这个函数解决了HKMMoveR由于系统默认的鼠标加速影响了移动距离的问题，但缺点是不能用于系统中鼠标位置锁定的情况。相关的设置函数：HKMSetMode、HKMSetAbsMouseScrnRes。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　横坐标：32位整型数。鼠标相对移动的横坐标。
参数3　纵坐标：32位整型数。鼠标相对移动的纵坐标。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMMoveR2(lpDev,100,50);
HKMClose(lpDev);


HKMMoveRP

名称 | HKMMoveRP 鼠标相对移动
功能 | 鼠标底层的相对移动。这个是USB鼠标底层的一次移动，用于给使用者自己实现完整的鼠标移动。设置为普通鼠标和设置为游戏鼠标的移动距离不同，普通鼠标横坐标和纵坐标一次最大的移动距离都是127(是鼠标的物理相对移动坐标，不是屏幕坐标)，游戏鼠标横坐标和纵坐标一次最大的移动距离都是32767。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　横坐标：32位整型数。鼠标相对移动的横坐标。
参数3　纵坐标：32位整型数。鼠标相对移动的纵坐标。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMMoveRP(lpDev,100,50);
HKMClose(lpDev);


HKMMoveTo

名称 | HKMMoveTo 鼠标移动
功能 | 鼠标移动到指定的屏幕坐标。相关的设置函数：HKMSetMode、HKMSetMousePosPrecision、HKMSetMouseMoveTimeout、HKMSetMousePosMaxOffset、HKMSetAbsMouseScrnRes。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　横坐标：32位整型数。鼠标要移动到的横坐标。
参数3　纵坐标：32位整型数。鼠标要移动到的纵坐标。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMMoveTo(lpDev,100,50);
HKMClose(lpDev);


HKMOpen

名称 | HKMOpen 打开设备
功能 | 打开无涯键鼠盒子，以便对它进行操作。使用相对鼠标时（注意相对鼠标和相对移动的区别），当系统中屏幕或鼠标的设置发生变化时，需要重新打开设备（先关闭设备再打开设备）。比如：屏幕分辨率或屏幕DPI(缩放)变化、鼠标指针速度或“提高指针精确度”变化。
参数 参数1　设备ID：无符号32位整型数。使用HKMSearchDevice或者HKMSearchDevice2可以获得它。
参数2　DPI模式：无符号32位整型数。用于设置鼠标移动（HKMMoveTo和HKMMoveR2）和获得鼠标坐标（HKMGetCursorPos和HKMGetCursorPos2）时使用的坐标的DPI模式。系统为了支持程序界面缩放，使用了不同坐标，不同DPI模式对应不同坐标计算方式。DPI模式中的前三种都是windows系统中的模式，可查微软资料了解详细内容，后面几种是这三种模式的变化。可取值：
值 | 说明
0 | 每个显示器DPI感知，此模式不受系统DPI设置和显示器DPI设置影响，每个坐标与显示器像素是一一对应的，windows系统从WIN8.1开始支持此模式，WIN8.1以前等效于系统DPI感知。
1 | 系统DPI感知。在WIN8.1以前的系统中每个坐标与显示器像素是一一对应的，在WIN8.1及WIN8.1以后的系统中由于每个显示器可以设置不同DPI，每个坐标与显示器像素不总是一一对应关系，如果只有一个显示器，且开机、重启、注销重登录后没改过DPI，每个坐标与显示器像素还是一一对应的。
2 | 无DPI感知，进程没有处理DPI缩放时的状态。进程把系统DPI和显示器DPI当成是100%时的状态。缩放由系统处理，明显看到的现象是：如果DPI是100%时一切正常，如果DPI不是100%此时会导致程序界面模糊。
3 | DPI不可用，这个模式的主要目的是不释放和执行DPI检测进程。在符合的条件下，等效于每个显示器DPI感知；在不符合的条件下，DPI变换可能无法正常工作。符合的条件是：在WIN8.1以前的系统中系统DPI是100%或者当前上下文的DPI感知是系统DPI感知，在WIN8.1及WIN8.1以后的系统中所有显示器DPI是100%时或当前上下文的DPI感知是每个显示器DPI感知时可正常工作。
4 | 当前上下文的DPI感知。根据当前上下文决定DPI感知。
返回值 | 无类型指针。创建的设备对象，也可以看成句柄。失败返回NULL。不再使用它时用HKMClose可以关闭它以释放资源。WIN10以前的系统常见的失败原因是由于安全软件拦截或者系统权限问题导致DPI进程启动失败，可以把参数2设置为3禁用模块对DPI的支持解决这个问题。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
//执行操作
HKMClose(lpDev);


HKMOpen2

名称 | HKMOpen2 打开设备
功能 | 打开两个无涯键鼠盒子（一个键盘模式、一个鼠标模式），以便对它们进行操作。使用相对鼠标时（注意相对鼠标和相对移动的区别），当系统中屏幕或鼠标的设置发生变化时，需要重新打开设备（先关闭设备再打开设备）。比如：屏幕分辨率或屏幕DPI(缩放)变化、鼠标指针速度或“提高指针精确度”变化。
参数 参数1　第一个设备ID：无符号32位整型数。使用HKMSearchDevice或者HKMSearchDevice2可以获得它。
参数2　第二个设备ID：无符号32位整型数。使用HKMSearchDevice或者HKMSearchDevice2可以获得它。
参数3　DPI模式：无符号32位整型数。用于设置鼠标移动（HKMMoveTo和HKMMoveR2）和获得鼠标坐标（HKMGetCursorPos和HKMGetCursorPos2）时使用的坐标的DPI模式。系统为了支持程序界面缩放，使用了不同坐标，不同DPI模式对应不同坐标计算方式。DPI模式中的前三种都是windows系统中的模式，可查微软资料了解详细内容，后面几种是这三种模式的变化。可取值：
值 | 说明
0 | 每个显示器DPI感知，此模式不受系统DPI设置和显示器DPI设置影响，每个坐标与显示器像素是一一对应的，windows系统从WIN8.1开始支持此模式，WIN8.1以前等效于系统DPI感知。
1 | 系统DPI感知。在WIN8.1以前的系统中每个坐标与显示器像素是一一对应的，在WIN8.1及WIN8.1以后的系统中由于每个显示器可以设置不同DPI，每个坐标与显示器像素不总是一一对应关系，如果只有一个显示器，且开机、重启、注销重登录后没改过DPI，每个坐标与显示器像素还是一一对应的。
2 | 无DPI感知，进程没有处理DPI缩放时的状态。进程把系统DPI和显示器DPI当成是100%时的状态。缩放由系统处理，明显看到的现象是：如果DPI是100%时一切正常，如果DPI不是100%此时会导致程序界面模糊。
3 | DPI不可用，这个模式的主要目的是不释放和执行DPI检测进程。在符合的条件下，等效于每个显示器DPI感知；在不符合的条件下，DPI变换可能无法正常工作。符合的条件是：在WIN8.1以前的系统中系统DPI是100%或者当前上下文的DPI感知是系统DPI感知，在WIN8.1及WIN8.1以后的系统中所有显示器DPI是100%时或当前上下文的DPI感知是每个显示器DPI感知时可正常工作。
4 | 当前上下文的DPI感知。根据当前上下文决定DPI感知。
返回值 | 无类型指针。创建的设备对象，也可以看成句柄。失败返回NULL。不再使用它时用HKMClose可以关闭它以释放资源。WIN10以前的系统常见的失败原因是由于安全软件拦截或者系统权限问题导致DPI进程启动失败，可以把参数3设置为3禁用模块对DPI的支持解决这个问题。
C语言
例子 		DWORD dwDevId1,dwDevId2;
LPVOID lpDev;
dwDevId1=HKMSearchDevice(0x1234,0xABCD,2);
if(dwDevId1==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子(键盘模式)\n");
return 0;
}
dwDevId2=HKMSearchDevice(0x1234,0xABCD,3);
if(dwDevId2==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子(鼠标模式)\n");
return 0;
}
lpDev=HKMOpen2(dwDevId1,dwDevId2,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
//执行操作
HKMClose(lpDev);


HKMOutputString

名称 | HKMOutputString 输出字符串
功能 | 用于向需要打字输入文本的地方输出字符串。设置输出字符串的模式使用HKMSetMode，设置输出速度使用HKMSetKeyInterval。如果输出的中文是乱码，则需要修改输出字符串的模式。要注意当前输入法，有的输入法不支持这样输入，会有中文无法输出或者全部无法输出的问题。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　字符串：字符串(Unicode/Ansi)。默认是Unicode字符串，可以通过HKMSetMode修改为Ansi字符串。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMOutputString(lpDev,L"输出字符串测试");
HKMClose(lpDev);


HKMReleaseKeyboard

名称 | HKMReleaseKeyboard 释放键盘按键
功能 | 把无涯键鼠盒子中键盘按下的键全部弹起。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMKeyDown(lpDev,L"A");
HKMDelayRnd(lpDev,90,120);
HKMReleaseKeyboard(lpDev);
HKMClose(lpDev);


HKMReleaseMouse

名称 | HKMReleaseMouse 释放鼠标按键
功能 | 把无涯键鼠盒子中鼠标按下的键全部弹起。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMLeftDown(lpDev);
HKMDelayRnd(lpDev,90,120);
HKMReleaseMouse(lpDev);
HKMClose(lpDev);


HKMRightClick

名称 | HKMRightClick 鼠标右键单击
功能 | 鼠标右键单击。设置鼠标键按下和弹起时间间隔使用HKMSetMouseInterval。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMRightClick(lpDev);
HKMClose(lpDev);


HKMRightDoubleClick

名称 | HKMRightDoubleClick 鼠标右键双击
功能 | 鼠标右键双击。设置鼠标键按下和弹起时间间隔使用HKMSetMouseInterval。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMRightDoubleClick(lpDev);
HKMClose(lpDev);


HKMRightDown

名称 | HKMRightDown 鼠标右键按下
功能 | 鼠标右键按下。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMRightDown(lpDev);
HKMDelayRnd(lpDev,90,120);
HKMRightUp(lpDev);
HKMClose(lpDev);


HKMRightUp

名称 | HKMRightUp 鼠标右键弹起
功能 | 鼠标右键弹起。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMRightDown(lpDev);
HKMDelayRnd(lpDev,90,120);
HKMRightUp(lpDev);
HKMClose(lpDev);


HKMSearchDevice

名称 | HKMSearchDevice 查找设备
功能 | 查找无涯键鼠盒子。
参数 参数1　VID：无符号32位整型数。每个无涯键鼠盒子的值可能不一样，可用工具查看。值为65536时忽略此搜索条件，查找到的无涯键鼠盒子的VID可以为任意值。
参数2　PID：无符号32位整型数。每个无涯键鼠盒子的值可能不一样，可用工具查看。值为65536时忽略此搜索条件，查找到的无涯键鼠盒子的PID可以为任意值。
参数3　设备模式：无符号32位整型数。用于设置查找的无涯键鼠盒子的模式。可取值如下：
值 | 说明
0 | 所有模式
1 | 键鼠模式
2 | 键盘模式
3 | 鼠标模式
返回值 | 无符号32位整型数。一个临时的设备ID号，只对当前模块有效。没找到或者失败返回0xFFFFFFFF。
C语言
例子 		printf("设备ID号:%08X\n",HKMSearchDevice(0x1234,0xABCD,0));


HKMSearchDevice2

名称 | HKMSearchDevice2 查找设备
功能 | 查找无涯键鼠盒子。
参数 参数1　VID：无符号32位整型数。每个无涯键鼠盒子的值可能不一样，可用工具查看。值为65536时忽略此搜索条件，查找到的无涯键鼠盒子的VID可以为任意值。
参数2　PID：无符号32位整型数。每个无涯键鼠盒子的值可能不一样，可用工具查看。值为65536时忽略此搜索条件，查找到的无涯键鼠盒子的PID可以为任意值。
参数3　序列号：无符号32位整型数。每个无涯键鼠盒子的值都不一样，可用工具查看。
参数4　设备模式：无符号32位整型数。用于设置查找的无涯键鼠盒子的模式。可取值如下：
值 | 说明
0 | 所有模式
1 | 键鼠模式
2 | 键盘模式
3 | 鼠标模式
返回值 | 无符号32位整型数。一个临时的设备ID号，只对当前模块有效。没找到或者失败返回0xFFFFFFFF。
C语言
例子 		printf("设备ID号:%08X\n",HKMSearchDevice2(0x1234,0xABCD,0x12345678,1));


HKMSearchDeviceAll

名称 | HKMSearchDeviceAll 查找全部设备
功能 | 查找符合条件的全部无涯键鼠盒子。
参数 参数1　VID：无符号32位整型数。每个无涯键鼠盒子的值可能不一样，可用工具查看。值为65536时忽略此搜索条件，查找到的无涯键鼠盒子的VID可以为任意值。
参数2　PID：无符号32位整型数。每个无涯键鼠盒子的值可能不一样，可用工具查看。值为65536时忽略此搜索条件，查找到的无涯键鼠盒子的PID可以为任意值。
参数3　设备模式：无符号32位整型数。用于设置查找的无涯键鼠盒子的模式。可取值如下：
值 | 说明
0 | 所有模式
1 | 键鼠模式
2 | 键盘模式
3 | 鼠标模式
返回值 | 无符号32位整型数地址。成功返回设备ID的数组，可用HKMGetDataCount函数获取数组元素数量。失败返回NULL。当不再使用这个字符串时，使用HKMFreeData释放数组所占用的资源。
C语言
例子 		LPDWORD pDevId;
DWORD dwCount,i;
pDevId=HKMSearchDeviceAll(0x1234,0xABCD,0);
if(pDevId==NULL)
{
printf("查找设备失败\n");
return 0;
}
dwCount=HKMGetDataCount(pDevId);
printf("找到的设备数量:%u\n",dwCount);
for(i=0;i<dwCount;i++)
{
printf("%08X\n",pDevId[i]);
}
HKMFreeData(pDevId);


HKMSetAbsMouseScrnRes

名称 | HKMSetAbsMouseScrnRes 设置绝对鼠标屏幕分辨率
功能 | 设置绝对鼠标移动所需的主显示器的屏幕分辨率。有关函数：HKMMoveTo、HKMMoveR2。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　宽度：32位整型数。参数2和参数3都取0时，设置屏幕分辨率为当前系统主显示器的屏幕分辨率。
参数3　高度：32位整型数。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMSetAbsMouseScrnRes(lpDev,800,600);
HKMClose(lpDev);


HKMSetDevDescInfo

名称 | HKMSetDevDescInfo 设置设备描述信息
功能 | 设置无涯键鼠盒子的设备描述信息。这个函数设置无涯键鼠盒子的USB接口信息后，由于设备信息改变，系统会重新识别设备和自动安装驱动，需要等待几分钟或更长时间才能正常使用，这个过程中不要拔出盒子，否则会导致系统安装驱动失败。修改后需要关闭设备，等待系统安装驱动完成后再查找和打开设备，否则有些功能会受到影响，无法正常工作。无涯键鼠盒子基础版二代的固件版本大于等于1.2.0才支持此函数。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　VID：无符号32位整形数。USB接口的制造商ID。可设置值的范围0-65535。值为65536时不修改无涯键鼠盒子VID值。
参数3　PID：无符号32位整形数。USB接口的产品ID。可设置值的范围0-65535。值为65536时不修改无涯键鼠盒子PID值。
参数4　版本：无符号32位整形数。USB接口的设备版本。可设置值的范围0-65535。值为65536时不修改无涯键鼠盒子版本值。
参数5　制造商名：字符串(Unicode/Ansi)或者无符号32/64位整型数(32位模块中是32位整型数，64位模块中是64位整型数)。USB接口的制造商名。设置制造商名是字符串（默认是Unicode字符串，可以通过HKMSetMode修改为Ansi字符串）。不修改制造商名时使用无符号32/64位整型数，值为1。
参数6　产品名：字符串(Unicode/Ansi)或者无符号32/64位整型数(32位模块中是32位整型数，64位模块中是64位整型数)。USB接口的产品名。设置产品名是字符串（默认是Unicode字符串，可以通过HKMSetMode修改为Ansi字符串）。不修改产品名时使用无符号32/64位整型数，值为1。
参数7　模式：无符号32位整形数。可取值如下：
值 | 说明
0 | 取消临时设置。
1 | 临时设置，断电（USB接口停电或拔出无涯键鼠盒子）后恢复。
2 | 永久设置，断电后不会恢复，但有设置次数限制，不断电只能设置5次。
参数8　是否鼠标：布尔值。取FALSE时，自动设置设备描述信息，如果同时有键盘模式或者鼠标模式的设备，设置键盘模式的设备的设备描述信息。取TRUE时，自动设置设备描述信息，如果同时有键盘模式或者鼠标模式的设备，设置鼠标模式的设备的设备描述信息。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
//修改设备描述信息，PID和制造商名不修改
HKMSetDevDescInfo(lpDev,0x1235,0x10000,0x0101,(LPCWSTR)1,L"Mouse",1,FALSE);
HKMClose(lpDev);


HKMSetKeyInterval

名称 | HKMSetKeyInterval 设置按键时间间隔
功能 | 设置键盘按下和弹起之间的时间间隔，只对当前的设备对象有效。具体的时间间隔是个一定范围内的随机值，也可以设置成固定值。默认按键时间间隔是个100毫秒附近的随机值。有关函数：HKMKeyPress、HKMOutputString。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　最短时间：无符号32位整型数。单位毫秒。
参数3　最长时间：无符号32位整型数。单位毫秒。最长时间等于最短时间时，时间间隔是固定值。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMSetKeyInterval(lpDev,100,150);
HKMClose(lpDev);


HKMSetLightMode

名称 | HKMSetLightMode 设置指示灯模式
功能 | 设置无涯键鼠盒子的指示灯模式。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0才支持此函数。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　模式：无符号32位整形数。可取值如下：
值 | 说明
0 | 闪烁(默认模式)
1 | 灯亮
2 | 灯灭
8 | 模式不复位，盒子复位时模式不变，可与其它值做位或运算组合使用
参数3　是否鼠标：布尔值。取FALSE时，自动设置指示灯模式，如果同时有键盘模式或者鼠标模式的设备，设置键盘模式的设备的指示灯模式。取TRUE时，自动设置指示灯模式，如果同时有键盘模式或者鼠标模式的设备，设置鼠标模式的设备的指示灯模式。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMSetLightMode(lpDev,1,FALSE);
HKMClose(lpDev);


HKMSetMode

名称 | HKMSetMode 设置模式
功能 | 设置无涯键鼠盒子的工作模式，只对当前的设备对象有效。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　属性：无符号32位整型数。
参数3　模式：无符号32位整型数。
属性 | 属性说明 | 模式 | 模式说明
2 | 鼠标移动的方式，0是仿真相对鼠标移动（默认模式），可通过一个或多个值进行选择，同时选择多个值用或运算进行组合。有关函数：HKMMoveTo、HKMMoveR、HKMMoveR2。鼠标移动模式常用值介绍。 | 1 | 快速移动，只追求鼠标移动速度，不模仿手动操纵鼠标的移动方式
 |  | 2 | 绝对鼠标移动，通常物理鼠标只有相对移动，这个是绝对移动，绝对移动只能在主显示器内移动，使用后HKMMoveTo和HKMMoveR2以绝对移动方式进行，需要无涯键鼠盒子开启“绝对鼠标”模式或者“相对鼠标+绝对鼠标”模式。注意：HKMMoveTo没在这里设置绝对鼠标移动也能用相对鼠标实现绝对移动，HKMMoveR2在这里设置绝对鼠标移动后会用绝对鼠标实现相对移动。
 |  | 4 | 基础移动模式，移动到指定坐标只能在鼠标没使用“提高指针精确度”且“选择指针移动速度”在中间（物理鼠标相对移动坐标和屏幕坐标的比例是1:1），win10的Dpi是100%时使用，移动过程中不会修正其它鼠标移动的影响，优点是速度快些。使用绝对鼠标移动时无效，对HKMMoveR无效。
 |  | 0 | 变速模式，开始加速，结束减速。使用快速移动时无效。
 |  | 8 | 匀速模式，无加减速，距离短时会降低速度。使用快速移动时无效，对于HKMMoveTo和HKMMoveR2在绝对鼠标移动和基础移动模式都没使用时无效。
 |  | 16 | 定速模式，无加减速，距离短时不降低速度。使用快速移动时无效，对于HKMMoveTo和HKMMoveR2在绝对鼠标移动和基础移动模式都没使用时无效。
3 | 鼠标滚轮滚动方式，有关函数：HKMMouseWheel | 0 | 仿真滚动，模仿手动操作鼠标滚轮的方式，速度较慢(默认模式)。
 |  | 1 | 快速滚动，只追求鼠标滚轮滚动速度，不模仿手动操纵鼠标滚轮的方式。
4 | 输出字符串编码，不同窗口接受的字符串编码不同，选择错了会收到乱码，有关函数：HKMOutputString | 0 | 输出ANSI字符串(默认模式)
 |  | 1 | 输出UNICODE字符串
 |  | 2 | 输出ANSI字符串，与模式0的差异是：在输出半角数字、字母和部分字符时，和手动输入一样，速度更快，但更易受键盘或输入法干扰。
 |  | 3 | 输出UNICODE字符串，与模式1的差异是：在输出半角数字、字母和部分字符时，和手动输入一样，速度更快，但更易受键盘或输入法干扰。
 |  | 4 | 使用剪贴板粘贴输出字符串。优点是输出字符多时速度更快且不受输入法影响，缺点是会改写剪贴板的内容和不支持虚拟机外操作虚拟机内。
5 | 键盘鼠标同步方式，同步是等待盒子的数据被电脑硬件接收，但不代表系统已经处理了该数据，有时系统繁忙，电脑硬件接收到数据与系统处理该数据之间有时间差，一般这个时间较短，多数情况不到1毫秒。0是全部同步（默认模式），异步可通过一个或多个值进行选择，同时选择多个值用或运算进行组合。有关函数：HKMKeyPress、HKMKeyDown、HKMKeyUp、HKMLeftClick、HKMRightClick、HKMMiddleClick、HKMXBtn1Click、HKMXBtn2Click、HKMLeftDoubleClick、HKMRightDoubleClick、HKMMiddleDoubleClick、HKMXBtn1DoubleClick、HKMXBtn2DoubleClick、HKMLeftDown、HKMRightDown、HKMMiddleDown、HKMXBtn1Down、HKMXBtn2Down、HKMLeftUp、HKMRightUp、HKMMiddleUp、HKMXBtn1Up、HKMXBtn2Up、HKMMoveRP、HKMMouseWheelP、HKMOutputString | 1 | 键盘异步，不等待键盘动作完成直接返回
 |  | 2 | 鼠标异步，不等待鼠标动作完成直接返回
6 | 随机延时的概率分布方式。有关函数：HKMDelayRnd、HKMKeyPress、HKMLeftClick、HKMRightClick、HKMMiddleClick、HKMXBtn1Click、HKMXBtn2Click、HKMLeftDoubleClick、HKMRightDoubleClick、HKMMiddleDoubleClick、HKMXBtn1DoubleClick、HKMXBtn2DoubleClick、HKMOutputString | 0 | 延时随机均匀分布，延时值的概率相同(默认模式)
 |  | 1 | 延时随机偏小分布，延时值越小，概率越高，最大值的概率接近0
7 | 延时方式。有关函数：HKMDelayRnd、HKMKeyPress、HKMLeftClick、HKMRightClick、HKMMiddleClick、HKMXBtn1Click、HKMXBtn2Click、HKMLeftDoubleClick、HKMRightDoubleClick、HKMMiddleDoubleClick、HKMXBtn1DoubleClick、HKMXBtn2DoubleClick、HKMOutputString | 0 | 不处理窗口消息(默认模式)
 |  | 1 | 处理窗口消息
32 | 函数参数和返回值中的字符串类型，用于解决有的编程工具对Unicode字符串支持不好的问题。有关函数：HKMGetDevString、HKMKeyPress、HKMKeyDown、HKMKeyUp、HKMOutputString、HKMVerifyUserData、HKMVerifyUserData2 | 0 | 函数的字符串参数使用Unicode编码(默认模式)
 |  | 1 | 函数的字符串参数使用Ansi编码
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMSetMode(lpDev,2,1);
HKMClose(lpDev);


HKMSetMouseInterval

名称 | HKMSetMouseInterval 设置鼠标时间间隔
功能 | 设置鼠标键按下和弹起之间的时间间隔，只对当前的设备对象有效。具体的时间间隔是个一定范围内的随机值，也可以设置成固定值。默认鼠标时间间隔是个100毫秒附近的随机值。有关函数：HKMLeftClick、HKMRightClick、HKMMiddleClick、HKMLeftDoubleClick、HKMRightDoubleClick、HKMMiddleDoubleClick。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　最短时间：无符号32位整型数。单位毫秒。
参数3　最长时间：无符号32位整型数。单位毫秒。最长时间等于最短时间时，时间间隔是固定值。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMSetMouseInterval(lpDev,100,150);
HKMClose(lpDev);


HKMSetMouseMoveTimeout

名称 | HKMSetMouseMoveTimeout 设置鼠标移动超时时间
功能 | 当鼠标移动时间超过设定时间时，停止移动并返回FALSE。只对当前的设备对象有效。相关函数：HKMMoveTo。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　时间：无符号32位整型数。鼠标移动超时时间，单位毫秒。取值为0xFFFFFFFF时，取消超时时间限制。默认值是10秒。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMSetMouseMoveTimeout(lpDev,50000);
HKMClose(lpDev);


HKMSetMousePosMaxOffset

名称 | HKMSetMousePosMaxOffset 设置鼠标坐标最大偏移
功能 | 手动鼠标移动时，通常不会每次都点到相同的坐标，有一定的随机范围，这里就是模拟这个行为设置的坐标随机偏差最大值。只对当前的设备对象有效。相关函数：HKMMoveTo。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　最大偏移：无符号32位整型数。坐标随机偏差最大值。默认值是0。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMSetMousePosMaxOffset(lpDev,2);
HKMClose(lpDev);


HKMSetMousePosPrecision

名称 | HKMSetMousePosPrecision 设置鼠标坐标精度
功能 | 当系统设置中的鼠标移动速度过快时，鼠标坐标无法精确到每个像素，会在目标坐标附近抖动很久，这个时候就要调大鼠标精度，容许鼠标移动到目标坐标时有少量偏差。只对当前的设备对象有效。相关函数：HKMMoveTo、HKMMoveR2。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　精度：无符号32位整型数。最大允许的坐标偏差量。默认值是0。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMSetMousePosPrecision(lpDev,1);
HKMClose(lpDev);


HKMSetMouseSpeed

名称 | HKMSetMouseSpeed 设置鼠标速度
功能 | 设置鼠标移动速度。它设置的是键鼠盒子鼠标移动速度的最大值。快速移动模式和HKMMoveRP不受它影响。有关函数：HKMMoveR、HKMMoveR2、HKMMoveTo。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　鼠标速度：布尔值。无符号32位整型数。取值范围是5-100，值越大速度越快，默认值是45。使用了这个函数不代表速度最大值就完全固定了，移动函数的最大速度有小范围的随机波动（快递移动模式和HKMMoveRP除外）。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMSetMouseSpeed(lpDev,20);
HKMClose(lpDev);


HKMSetOSMouseSpeed

名称 | HKMSetOSMouseSpeed 设置系统鼠标速度
功能 | 设置系统鼠标速度。系统的鼠标速度在系统设置中的名称是“选择指针移动速度”。它设置的是物理鼠标移动速度与系统中移动速度的比例。
参数 | 参数1 速度：32位整型数。这个值的范围是1-20，值越大，在系统中的速度越快，系统的默认值是10。 参数2 是否保存：布尔值。取TRUE时，系统重启后仍然有效；取FALSE时，系统重启后恢复设置。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言 例子 | HKMSetOSMouseSpeed(10,FALSE);


HKMSetResetMode

名称 | HKMSetResetMode 设置复位模式
功能 | 设置无涯键鼠盒子的延时复位模式。这个函数设置延时复位的模式，启用延时复位功能使用HKMSetResetTime。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0才支持此函数。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　模式：无符号32位整形数。可取值如下：
值 | 说明
0 | 盒子硬件复位(默认模式)
1 | 键盘鼠标按键状态复位
参数3　是否鼠标：布尔值。取FALSE时，自动设置复位模式，如果同时有键盘模式或者鼠标模式的设备，设置键盘模式的设备的复位模式。取TRUE时，自动设置复位模式，如果同时有键盘模式或者鼠标模式的设备，设置鼠标模式的设备的复位模式。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMSetResetMode(lpDev,1,FALSE);
for(;;)
{
HKMSetResetTime(lpDev,1000,FALSE);
HKMDelayRnd(lpDev,90,120);
}
HKMClose(lpDev);


HKMSetResetTime

名称 | HKMSetResetTime 设置复位时间
功能 设置无涯键鼠盒子的延时复位时间。盒子内有个计时器，使用该函数后，时间到了就会使盒子复位。无论使用这个函数还是其它访问盒子的键鼠命令，都会使计时器重新计时。复位后计时器失效，需要使用该函数重新设置。无涯键鼠盒子有时在特殊情况下会出现通讯异常，或者程序突然退出导致按下的键无法弹起，这个函数可以免去这些情况下插拔盒子烦恼。如果条件允许，尽量在停止无涯键鼠盒子操作后关闭延时复位。因为正常的键盘和鼠标除非接触不良，一般不会出现复位现象。无涯键鼠盒子基础版一代不支持此函数。
不会访问盒子的函数有：HKMGetVersion、HKMIsOpen、HKMClose、HKMSetMode、HKMSetKeyInterval、HKMSetMouseInterval、HKMSetAbsMouseScrnRes、HKMSetMouseMoveTimeout、HKMSetMousePosMaxOffset、HKMSetMousePosPrecision、HKMDelayRnd、HKMCheckPressedKeys、HKMFreeData、HKMIsOSMouseAccelerateEnabled、HKMEnableOSMouseAccelerate、HKMGetOSMouseSpeed、HKMSetOSMouseSpeed、HKMGetDevString。相关函数：HKMSetResetMode。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　延时时间：无符号32位整形数。单位毫秒。取0时关闭延时复位。非0时最小值是50毫秒，最大值是19小时。
参数3　是否鼠标：布尔值。取FALSE时，自动设置延时复位时间，如果同时有键盘模式或者鼠标模式的设备，设置键盘模式的设备的延时复位时间。取TRUE时，自动设置延时复位时间，如果同时有键盘模式或者鼠标模式的设备，设置鼠标模式的设备的延时复位时间。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
for(;;)
{
HKMSetResetTime(lpDev,1000,FALSE);
HKMDelayRnd(lpDev,90,120);
}
HKMClose(lpDev);


HKMVerifyUserData

名称 | HKMVerifyUserData 验证用户数据
功能 | 用于验证用户使用“无涯键鼠盒子修改器”写入的字符串和这里的字符串是否相同。无涯键鼠盒子基础版一代的固件版本大于等于1.2.0才支持此函数。相关的设置函数：HKMSetMode。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　字符串：字符串(Unicode/Ansi)。默认是Unicode字符串，可以通过HKMSetMode修改为Ansi字符串。
参数3　是否鼠标：布尔值。取FALSE时，自动验证用户数据，如果同时有键盘模式或者鼠标模式的设备，验证键盘模式的设备的用户数据。取TRUE时，自动验证用户数据，如果同时有键盘模式或者鼠标模式的设备，验证鼠标模式的设备的用户数据。
返回值 | 布尔值。相同返回TRUE，不同或失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
printf("验证用户数据：%d\n",HKMVerifyUserData(lpDev,L"我的用户数据",FALSE));
HKMClose(lpDev);


HKMVerifyUserData2

名称 | HKMVerifyUserData2 验证用户数据2
功能 | 用于验证用户使用“无涯键鼠盒子修改器”写入的字符串和这里的字符串是否相同。HKMVerifyUserData函数的升级版，用户数据和验证数据分离，其他人无法通过验证数据获得用户数据。由于固件设计原因，HKMVerifyUserData和HKMVerifyUserData2不支持同时使用。无涯键鼠盒子基础版一代不支持此函数。相关的设置函数：HKMSetMode。
参数 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
参数2　验证数据：字符串(Unicode/Ansi)。默认是Unicode字符串，可以通过HKMSetMode修改为Ansi字符串。
参数3　是否鼠标：布尔值。取FALSE时，自动验证用户数据，如果同时有键盘模式或者鼠标模式的设备，验证键盘模式的设备的验证数据。取TRUE时，自动验证用户数据，如果同时有键盘模式或者鼠标模式的设备，验证鼠标模式的设备的验证数据。
返回值 | 32位无符号整形数。验证通过返回32位序列号值，验证没通过返回32位序列号值的反码，失败返回0。序列号可以使用HKMGetSerialNumber函数获取。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
printf("验证用户数据：%d\n",HKMVerifyUserData(lpDev,L"1234567890ABCDEF1234567890ABCDEF",FALSE)==HKMGetSerialNumber(lpDev,FALSE));
HKMClose(lpDev);


HKMXBtn1Click

名称 | HKMXBtn1Click 鼠标XButton1键单击
功能 | 鼠标XButton1键单击。设置鼠标键按下和弹起时间间隔使用HKMSetMouseInterval。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMXBtn1Click(lpDev);
HKMClose(lpDev);


HKMXBtn1DoubleClick

名称 | HKMXBtn1DoubleClick 鼠标XButton1键双击
功能 | 鼠标XButton1键双击。设置鼠标键按下和弹起时间间隔使用HKMSetMouseInterval。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMXBtn1DoubleClick(lpDev);
HKMClose(lpDev);


HKMXBtn1Down

名称 | HKMXBtn1Down 鼠标XButton1键按下
功能 | 鼠标XButton1键按下。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMXBtn1Down(lpDev);
HKMClose(lpDev);


HKMXBtn1Up

名称 | HKMXBtn1Up 鼠标XButton1键弹起
功能 | 鼠标XButton1键弹起。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMXBtn1Up(lpDev);
HKMClose(lpDev);


HKMXBtn2Click

名称 | HKMXBtn2Click 鼠标XButton2键单击
功能 | 鼠标XButton2键单击。设置鼠标键按下和弹起时间间隔使用HKMSetMouseInterval。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMXBtn2Click(lpDev);
HKMClose(lpDev);


HKMXBtn2DoubleClick

名称 | HKMXBtn2DoubleClick 鼠标XButton2键双击
功能 | 鼠标XButton2键双击。设置鼠标键按下和弹起时间间隔使用HKMSetMouseInterval。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMXBtn2DoubleClick(lpDev);
HKMClose(lpDev);


HKMXBtn2Down

名称 | HKMXBtn2Down 鼠标XButton2键按下
功能 | 鼠标XButton2键按下。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMXBtn2Down(lpDev);
HKMClose(lpDev);


HKMXBtn2Up

名称 | HKMXBtn2Up 鼠标XButton2键弹起
功能 | 鼠标XButton2键弹起。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 | 参数1　设备对象：无类型指针。使用HKMOpen可以创建它。
返回值 | 布尔值。成功返回TRUE，失败返回FALSE。
C语言
例子 		DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到无涯键鼠盒子\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开无涯键鼠盒子失败\n");
return 0;
}
HKMXBtn2Up(lpDev);
HKMClose(lpDev);


类型说明

这里的数据类型是用VC的类型来描述的，各语言会有点差异，这里对部分类型进行说明：

布尔值，可以看成特殊的整型数，占四个字节，TRUE是1，FALSE是0。

字符串，字符指针类型,以字符编码为0的字符结束，常见的类型有Ansi和Unicode两种，参数中的字符串类型可以使用HKMSetMode设置。


虚拟键码表
键码 | 键名 | 描述 | 键码 | 键名 | 描述
8 | Backspace | 退格键 | 88 | X |
9 | Tab | Tab键 | 89 | Y |
13 | Enter | 回车键 | 90 | Z |
16 | Shift | Shift键 | 91 | Left Win | 左Windows键
17 | Ctrl | Ctrl键 | 92 | Right Win | 右Windows键
18 | Alt | Alt键 | 93 | Apps | 菜单键
19 | Pause | 暂停键 | 96 | Num 0 | 小键盘0键
20 | Caps Lock | 大小写切换键 | 97 | Num 1 | 小键盘1键
27 | Esc | 退出键 | 98 | Num 2 | 小键盘2键
32 | Space | 空格键 | 99 | Num 3 | 小键盘3键
33 | Page Up | 向上翻页键 | 100 | Num 4 | 小键盘4键
34 | Page Down | 向下翻页键 | 101 | Num 5 | 小键盘5键
35 | End | 结尾键 | 102 | Num 6 | 小键盘6键
36 | Home | 起始键 | 103 | Num 7 | 小键盘7键
37 | Left | 左移键（向左箭头） | 104 | Num 8 | 小键盘8键
38 | Up | 上移键（向上箭头） | 105 | Num 9 | 小键盘9键
39 | Right | 右移键（向右箭头） | 106 | Num * | 小键盘*键
40 | Down | 下移键（向下箭头） | 107 | Num + | 小键盘+键
44 | Print Screen | 截屏键 | 108 | Num Enter | 小键盘回车键
45 | Insert | 插入键 | 109 | Num - | 小键盘-键
46 | Delete | 删除键 | 110 | Num . | 小键盘.键
48 | 0 |  | 111 | Num / | 小键盘/键
49 | 1 |  | 112 | F1 |
50 | 2 |  | 113 | F2 |
51 | 3 |  | 114 | F3 |
52 | 4 |  | 115 | F4 |
53 | 5 |  | 116 | F5 |
54 | 6 |  | 117 | F6 |
55 | 7 |  | 118 | F7 |
56 | 8 |  | 119 | F8 |
57 | 9 |  | 120 | F9 |
65 | A |  | 121 | F10 |
66 | B |  | 122 | F11 |
67 | C |  | 123 | F12 |
68 | D |  | 144 | Num Lock | 小键盘切换键
69 | E |  | 145 | Scroll Lock |
70 | F |  | 160 | Left Shift | 左Shift键
71 | G |  | 161 | Right Shift | 右Shift键
72 | H |  | 162 | Left Ctrl | 左Ctrl键
73 | I |  | 163 | Right Ctrl | 右Ctrl键
74 | J |  | 164 | Left Alt | 左Alt键
75 | K |  | 165 | Right Alt | 右Alt键
76 | L |  | 186 | ; | ;:
77 | M |  | 187 | = | =+
78 | N |  | 188 | , | ,<
79 | O |  | 189 | - | -_
80 | P |  | 190 | . | .>
81 | Q |  | 191 | / | /?
82 | R |  | 192 | ` | `~
83 | S |  | 219 | [ | [{
84 | T |  | 220 | \ | \|
85 | U |  | 221 | ] | ]}
86 | V |  | 222 | ' | '"
87 | W |  |  |  |


BSTR

名称 | BSTR 类型
功能 | 一种包含长度信息的字符串。


CheckPressedKeys

名称 | CheckPressedKeys 检查按键
功能 | 检查键盘、鼠标的哪些键被按下。在程序运行前，可能有些键盘或者鼠标的键因某种原因被按下未弹起，有的从物理上看弹起了，实际在逻辑上并未弹起。这样会影响后面的键盘、鼠标操作，所有最好先检查一下。
参数 参数1　模式：32位整型数。用于设置这个函数的工作方式。取值可以是下面的一个或多个，不用时可取0。如果要同时使用多个值，可将多个值做或运算。可取值：
值 | 说明
1 | 返回的字符串包含中文的信息，否则是全英文的信息
2 | 返回的字符串包含被按下的鼠标键信息，否则只包含被按下的键盘键
返回值 | BSTR类型。如果未检测到有被按下的键，返回“OK”字符串；如果检测到有被按下的键，返回被按下的键的信息；如果失败，返回空字符串。
vbs
例子 		Dim str
str=wyhkm.CheckPressedKeys(1)
If str=vbNullString Then
MsgBox "按键检查失败",4096
wscript.quit
End If
If str="OK" Then
MsgBox "检查到" & str & "被按下，可能是按下未弹起或者键盘故障，这会影响键盘鼠标操作，为了恢复它们，请尝试重新点击这些按键！",4096
wscript.quit
End If


Close

名称 | Close 关闭设备
功能 | 关闭Open打开的设备，不对它进行操作时，使用此函数关闭设备对象，用来释放它占用的资源。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If '执行操作 wyhkm.Close


DelayRnd

名称 | DelayRnd 随机延时
功能 | 在一个设定的时间范围内随机延时。使用Open打开设备后才可以使用它。
参数 | 参数1 最短时间：32位整型数。单位毫秒。 参数2 最长时间：32位整型数。单位毫秒。最长时间等于最短时间时，时间间隔是固定值。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.LeftDown wyhkm.DelayRnd 90,120 wyhkm.LeftUp wyhkm.Close


EnableOSMouseAccelerate

名称 | EnableOSMouseAccelerate 启停系统鼠标加速
功能 | 开启或停止系统的鼠标加速功能。系统的鼠标加速功能在系统设置中的名称是“提高指针精确度”，默认是开启的。它会让物理鼠标移动快的时候在系统中更快，物理鼠标移动慢的时候在系统中更慢，导致物理鼠标和系统中的鼠标移动距离不是固定的比例。
参数 | 参数1 是否开启：布尔值。取true时，开启系统鼠标加速；取false时，停止系统鼠标加速。 参数2 是否保存：布尔值。取true时，系统重启后仍然有效；取false时，系统重启后恢复设置。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | EnableOSMouseAccelerate(false,false)


GetCursorPos

名称 | GetCursorPos 获得鼠标坐标
功能 | 获得操作系统桌面中的鼠标坐标。使用Open打开设备后才可以使用它。
参数 | 参数1 横坐标：变体型（32位整型数）地址。用于接收鼠标横坐标。 参数2 纵坐标：变体型（32位整型数）地址。用于接收鼠标纵坐标。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId,x,y DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If If Not wyhkm.GetCursorPos(x,y) Then MsgBox "获得鼠标坐标失败\n",4096 wscript.quit End If MsgBox "鼠标坐标："&CStr(x)&","&CStr(y),4096 wyhkm.Close


GetCursorPos2

名称 | GetCursorPos2 获得鼠标坐标
功能 | 获得操作系统桌面中的鼠标坐标。功能与GetCursorPos完全相同，只是为了解决部分语言不支持参数传址的问题。使用Open打开设备后才可以使用它。
参数
返回值 | 32位整型数。低16位是横坐标，高16位是纵坐标。
vbs
例子 		Function GetX(pos)
GetX=CInt("&h" & Hex(pos And &h0000FFFF&))
End Function

Function GetY(pos)
GetY=CInt((pos And &hFFFF0000&)/&h10000&)
End Function

Dim DevId,pos
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
pos=wyhkm.GetCursorPos2()
MsgBox "鼠标坐标："&CStr(GetX(pos))&","&CStr(GetY(pos)),4096
wyhkm.Close


GetDevInfo

名称 | GetDevInfo 获得设备信息
功能 | 获得无涯键鼠盒子的设备信息。无涯键鼠盒子基础版一代不支持此函数。使用Open打开设备后才可以使用它。
参数 参数1　序号：32位整型数。需要获取的信息的序号。可取值如下：
序号 | 说明
1 | 设备类型。无涯键鼠盒子基础版一代返回1，无涯键鼠盒子基础版二代返回2。
2 | 固件版本。返回值中，0-15位是修订号，16-23位是副版本号，24-31位是主版本号。
3 | 运行时间。返回值是从通电或者复位开始运行的毫秒数，断电和复位都会归零。系统休眠时不计时。这个时间精度不高，有误差。
4 | 通电时间。返回值是从通电开始运行的毫秒数，断电会归零，复位不会归零。系统休眠时不计时。这个时间精度不高，有误差。
6 | 复位次数。
7 | 运行状态。设备未连接返回-1，设备准备中返回0，正常工作状态返回1，编辑状态返回2，禁止操作状态返回3。
8 | USB设备接口的VID值。
9 | USB设备接口的PID值。
10 | USB设备接口的设备版本值。
参数2　是否鼠标：布尔值。取false时，自动获得设备信息，如果同时有键盘模式或者鼠标模式的设备，获得键盘模式的设备信息。取true时，自动获得设备信息，如果同时有键盘模式或者鼠标模式的设备，获得鼠标模式的设备信息。
返回值 | 32位整型数。返回值由参数1决定。
vbs
例子 		Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
MsgBox "无涯键鼠标盒子固件版本号：" & Hex(wyhkm.GetDevInfo(2,false)),4096
wyhkm.Close


GetDevString

名称 | GetDevString 获得设备字符串
功能 | 获得设备相关的字符串。使用Open打开设备后才可以使用它。
参数 参数1　序号：32位整型数。需要获取的字符串的序号。可取值如下：
值 | 说明
1 | 制造商
2 | 产品名
参数2　是否鼠标：布尔值。取false时，自动获得设备字符串，如果同时有键盘模式或者鼠标模式的设备，获得键盘模式的设备字符串。取true时，自动获得设备字符串，如果同时有键盘模式或者鼠标模式的设备，获得鼠标模式的设备字符串。
返回值 | BSTR类型。失败返回空字符串。
vbs
例子 		Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
MsgBox "无涯键鼠标盒子制造商：" & wyhkm.GetDevString(1,false),4096
wyhkm.Close


GetError

名称 | GetError 获得错误代码
功能 | 获得错误代码。如果要获得错误代码在设备对象有关函数执行后立刻执行该函数，执行其它设备对象有关函数会覆盖之前的值。使用Open打开设备后才可以使用它。
参数
返回值 32位整型数。低16位是错误代码，高16位是错误编号。错误代码中，0是成功，低于57344是系统错误代码，与系统API“GetLastError”获得的值相同，具体值的解释可以在微软网站查看，高于或等于57344的错误代码如下：
值 | 说明 | 值 | 说明
0000(0) | 成功 | E020(57376) | 打开设备失败
E001(57345) | 失败 | E021(57377) | 通信失败
E002(57346) | 无效的参数 | E022(57378) | 无访问权限
E003(57347) | 无效的指针 | E023(57379) | 超时
E004(57348) | 无效的对象 | E024(57380) | 运行应用失败
E005(57349) | 无效的初始化值 | E025(57381) | 超出限制
E006(57350) | 无效的数据 | E026(57382) | 获取DPI信息失败
E007(57351) | 数据太大 | E027(57383) | 获取数据失败
E008(57352) | 字符串太长 | E028(57384) | 设备失败
E009(57353) | 数据区域太小 | E029(57385) | 设备超时
E00A(57354) | 不支持 |  |
E00B(57355) | 对象已存在 |  |
E00C(57356) | 系统错误 |  |
vbs
例子 		Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
wyhkm.MoveR 100,50
MsgBox "错误代码：" & wyhkm.GetError(),4096
wyhkm.Close


GetKeyboardLEDState

名称 | GetKeyboardLEDState 获得键盘LED灯状态
功能 | 获得键盘Num Lock、Caps Lock、Scroll Lock灯的状态。使用Open打开设备后才可以使用它。
参数 参数1　键盘灯：32位整型数。可取值如下：
值 | 说明
0 | Num Lock灯
1 | Caps Lock灯
2 | Scroll Lock灯
返回值 | 布尔值。灯亮返回true，灯灭返回false。
vbs
例子 		Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
If wyhkm.GetKeyboardLEDState(0) Then
MsgBox "NumLock灯亮",4096
Else
MsgBox "NumLock灯灭",4096
End If
wyhkm.Close


GetKeyboardMode

名称 | GetKeyboardMode 获得鼠标模式
功能 | 获得无涯键鼠盒子的键盘模式。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0才支持此函数。使用Open打开设备后才可以使用它。
参数
返回值 32位整型数。键盘模式，失败返回-1，成功返回值如下：
值 | 说明
0 | 无键盘
1 | 普通键盘
5 | 游戏键盘
vbs
例子 		Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
MsgBox "键盘模式：" & CStr(wyhkm.GetKeyboardMode()),4096
wyhkm.Close


GetMouseMode

名称 | GetMouseMode 获得鼠标模式
功能 | 获得无涯键鼠盒子的鼠标模式。无涯键鼠盒子基础版一代的固件版本大于等于1.2.0才支持此函数。使用Open打开设备后才可以使用它。
参数
返回值 32位整型数。鼠标模式，失败返回-1，成功返回值如下：
值 | 说明
0 | 无鼠标
1 | 相对坐标鼠标
2 | 绝对坐标鼠标
3 | 相对坐标鼠标+绝对坐标鼠标
5 | 相对坐标游戏鼠标
7 | 相对坐标游戏鼠标+绝对坐标鼠标
vbs
例子 		Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
MsgBox "鼠标模式：" & CStr(wyhkm.GetMouseMode()),4096
wyhkm.Close


GetOSMouseSpeed

名称 | GetOSMouseSpeed 获得系统鼠标速度
功能 | 获得系统鼠标速度。系统的鼠标速度在系统设置中的名称是“选择指针移动速度”。它设置的是物理鼠标移动速度与系统中移动速度的比例。
参数 |
返回值 | 32位整型数。成功时，这个值的范围是1-20，值越大，在系统中的速度越快，系统的默认值是10；失败返回0。
vbs 例子 | MsgBox "系统鼠标速度：" & wyhkm.GetOSMouseSpeed(),4096


GetSerialNumber

名称 | GetSerialNumber 获得序列号
功能 | 获得无涯键鼠盒子的序列号。使用Open打开设备后才可以使用它。
参数 | 参数1 是否鼠标：布尔值。取false时，自动获得设备序列号，如果同时有键盘模式或者鼠标模式的设备，获得键盘模式的设备序列号。取true时，自动获得设备序列号，如果同时有键盘模式或者鼠标模式的设备，获得鼠标模式的设备序列号。
返回值 | 32位整型数。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If MsgBox "无涯键鼠盒子序列号：" & Hex(wyhkm.GetSerialNumber(false)),4096 wyhkm.Close


GetVersion

名称 | GetVersion 获得当前模块版本
功能 | 获得当前模块版本。
参数 |
返回值 | 32位整型数。0-15位是修订号，16-23位是副版本号，24-31位是主版本号。
vbs 例子 | MsgBox "版本号：" & Hex(wyhkm.GetVersion()),4096


IsKeyBusy

名称 | IsKeyBusy 判断键盘是否繁忙
功能 | 判断无涯键鼠盒子的键盘是否繁忙。使用Open打开设备后才可以使用它。
参数 |
返回值 | 布尔值。繁忙返回true，空闲返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If If wyhkm.IsKeyBusy() Then MsgBox "无涯键鼠盒子键盘繁忙",4096 Else MsgBox "无涯键鼠盒子键盘空闲",4096 End If wyhkm.Close


IsKeyDown

名称 | IsKeyDown 判断键盘是否按下
功能 | 判断无涯键鼠盒子的键盘的键是否按下。使用Open打开设备后才可以使用它。
参数 | 参数1 键名：变体型（32位整型数或BSTR类型）。按键码使用32位整型数，按键名使用BSTR类型。按键码和按键名可查看虚拟键码表。
返回值 | 布尔值。按下返回true，没按下或者失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.KeyDown "Alt" MsgBox "Alt键状态:" & CStr(wyhkm.IsKeyDown("Alt")) wyhkm.DelayRnd 90,120 wyhkm.KeyUp "Alt" MsgBox "Alt键状态:" & CStr(wyhkm.IsKeyDown("Alt")) wyhkm.Close


IsMouseBusy

名称 | IsMouseBusy 判断鼠标是否繁忙
功能 | 判断无涯键鼠盒子的鼠标是否繁忙。使用Open打开设备后才可以使用它。
参数 |
返回值 | 布尔值。繁忙返回true，空闲返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If If wyhkm.IsMouseBusy() Then MsgBox "无涯键鼠盒子键盘繁忙",4096 Else MsgBox "无涯键鼠盒子键盘空闲",4096 End If wyhkm.Close


IsMouseButtonDown

名称 | IsMouseButtonDown 判断鼠标键是否按下
功能 | 判断无涯键鼠盒子的鼠标的键是否按下。使用Open打开设备后才可以使用它。
参数 参数1　鼠标键：32位整型数。可取值如下。
鼠标键 | 说明
0 | 鼠标左键
1 | 鼠标右键
2 | 鼠标中键
返回值 | 布尔值。按下返回true，没按下或者失败返回false。
vbs
例子 		Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
wyhkm.LeftDown
MsgBox "鼠标左键状态:" & CStr(wyhkm.IsMouseButtonDown(0))
wyhkm.DelayRnd 90,120
wyhkm.LeftUp
MsgBox "鼠标左键状态:" & CStr(wyhkm.IsMouseButtonDown(0))
wyhkm.Close


IsOpen

名称 | IsOpen 判断设备是否打开
功能 | 判断设备是否已经用Open打开。
参数 参数1　方法：32位整型数。取值可以是下面的一个或多个。如果要同时使用多个值，可将多个值做或运算。可取值：
值 | 说明
0 | 判断设备是否被打开（键鼠、键盘或鼠标模式的设备都可以，不可与其它值同时使用）
1 | 判断键盘是否被打开（键鼠或者键盘模式的设备）
2 | 判断鼠标是否被打开（键鼠或者鼠标模式的设备）
返回值 | 布尔值。已打开返回true，未打开返回false。
vbs
例子

Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
If wyhkm.IsOpen(0) Then
MsgBox "无涯键鼠盒子已打开",4096
Else
MsgBox "无涯键鼠盒子未打开",4096
End If
wyhkm.Close


IsOSMouseAccelerateEnabled

名称 | IsOSMouseAccelerateEnabled 判断是否开启系统鼠标加速
功能 | 判断是否开启系统的鼠标加速功能。系统的鼠标加速功能在系统设置中的名称是“提高指针精确度”，默认是开启的。它会让物理鼠标移动快的时候在系统中更快，物理鼠标移动慢的时候在系统中更慢，导致物理鼠标和系统中的鼠标移动距离不是固定的比例。
参数 |
返回值 | 布尔值。已开启系统鼠标加速返回true，未开启系统鼠标加速返回false。
vbs 例子 | If IsOSMouseAccelerateEnabled() Then MsgBox "已开启系统鼠标鼠标加速",4096 Else MsgBox "未开启系统鼠标鼠标加速",4096 End If


KeyDown

名称 | KeyDown 键盘按下
功能 | 键盘的键按下。使用Open打开设备后才可以使用它。
参数 | 参数1 键名：变体型（32位整型数或BSTR类型）。按键码使用32位整型数，按键名使用BSTR类型。按键码和按键名可查看虚拟键码表。字符串支持组合键，组合键的按键名用“+”连接，例如：“Ctrl+C”。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.KeyDown "F1" wyhkm.DelayRnd 90,120 wyhkm.KeyUp "F1" wyhkm.Close


KeyPress

名称 | KeyPress 键盘按键
功能 | 键盘的键按下再弹起。使用Open打开设备后才可以使用它。设置键盘按下和弹起时间间隔使用SetKeyInterval。
参数 | 参数1 键名：变体型（32位整型数或BSTR类型）。按键码使用32位整型数，按键名使用BSTR类型。按键码和按键名可查看虚拟键码表。字符串支持组合键，组合键的按键名用“+”连接，例如：“Ctrl+C”。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.KeyPress "F1" wyhkm.Close


KeyUp

名称 | KeyUp 键盘弹起
功能 | 键盘的键弹起。使用Open打开设备后才可以使用它。
参数 | 参数1 键名：变体型（32位整型数或BSTR类型）。按键码使用32位整型数，按键名使用BSTR类型。按键码和按键名可查看虚拟键码表。字符串支持组合键，组合键的按键名用“+”连接，例如：“Ctrl+C”。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.KeyDown "F1" wyhkm.DelayRnd 90,120 wyhkm.KeyUp "F1" wyhkm.Close


LeftClick

名称 | LeftClick 鼠标左键单击
功能 | 鼠标左键单击。使用Open打开设备后才可以使用它。设置鼠标键按下和弹起时间间隔使用SetMouseInterval。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.LeftClick wyhkm.Close


LeftDoubleClick

名称 | LeftDoubleClick 鼠标左键双击
功能 | 鼠标左键双击。使用Open打开设备后才可以使用它。设置鼠标键按下和弹起时间间隔使用SetMouseInterval。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.LeftDoubleClick wyhkm.Close


LeftDown

名称 | LeftDown 鼠标左键按下
功能 | 鼠标左键按下。使用Open打开设备后才可以使用它。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.LeftDown wyhkm.DelayRnd 90,120 wyhkm.LeftUp wyhkm.Close


LeftUp

名称 | LeftUp 鼠标左键弹起
功能 | 鼠标左键弹起。使用Open打开设备后才可以使用它。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.LeftDown wyhkm.DelayRnd 90,120 wyhkm.LeftUp wyhkm.Close


MiddleClick

名称 | MiddleClick 鼠标中键单击
功能 | 鼠标中键单击。使用Open打开设备后才可以使用它。设置鼠标键按下和弹起时间间隔使用SetMouseInterval。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.MiddleClick wyhkm.Close


MiddleDoubleClick

名称 | MiddleDoubleClick 鼠标中键双击
功能 | 鼠标中键双击。使用Open打开设备后才可以使用它。设置鼠标键按下和弹起时间间隔使用SetMouseInterval。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.MiddleDoubleClick wyhkm.Close


MiddleDown

名称 | MiddleDown 鼠标中键按下
功能 | 鼠标中键按下。使用Open打开设备后才可以使用它。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.MiddleDown wyhkm.DelayRnd 90,120 wyhkm.MiddleUp wyhkm.Close


MiddleUp

名称 | MiddleUp 鼠标中键弹起
功能 | 鼠标中键弹起。使用Open打开设备后才可以使用它。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.MiddleDown wyhkm.DelayRnd 90,120 wyhkm.MiddleUp wyhkm.Close


MouseWheel

名称 | MouseWheel 鼠标滚轮
功能 | 鼠标滚轮滚动。使用Open打开设备后才可以使用它。相关的设置函数：SetMode。
参数 | 参数1 滚动次数：32位整型数。滚动次数是滚轮滚动格数，向上滚动是正数，向下滚动是负数。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.MouseWheel 3 wyhkm.Close


MouseWheelP

名称 | MouseWheelP 鼠标滚轮
功能 | 鼠标底层的滚轮滚动。这个是USB鼠标底层的一次滚轮滚动。滚动一次最大的次数是127(手动操作最大次数参考值是3)。用于给使用者自己实现完整的鼠标滚轮滚动。使用Open打开设备后才可以使用它。相关的设置函数：SetMode。
参数 | 参数1 滚动次数：32位整型数。滚动次数是滚轮滚动格数，向上滚动是正数，向下滚动是负数。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.MouseWheelP 3 wyhkm.Close


MoveR

名称 | MoveR 鼠标相对移动
功能 | 鼠标相对移动。使用Open打开设备后才可以使用它。此移动距离是鼠标的物理相对移动，操作系统中默认使用了鼠标加速，所以实际移动距离和屏幕坐标的移动距离不同。而且受系统鼠标加速算法影响，相对移动坐标相同时，鼠标移动的距离也不是固定的。可关闭系统鼠标加速(提高指针精确度)解决鼠标相对移动不准的问题。相关的设置函数：SetMode。
参数 | 参数1 横坐标：32位整型数。鼠标相对移动的横坐标。 参数2 纵坐标：32位整型数。鼠标相对移动的纵坐标。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.MoveR 100,50 wyhkm.Close


MoveR2

名称 | MoveR2 鼠标相对移动
功能 | 鼠标相对移动。使用Open打开设备后才可以使用它。这个函数解决了MoveR由于系统默认的鼠标加速影响了移动距离的问题，但缺点是不能用于系统中鼠标位置锁定的情况。相关的设置函数：SetMode、SetAbsMouseScrnRes。
参数 | 参数1 横坐标：32位整型数。鼠标相对移动的横坐标。 参数2 纵坐标：32位整型数。鼠标相对移动的纵坐标。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.MoveR2 100,50 wyhkm.Close


MoveRP

名称 | MoveRP 鼠标相对移动
功能 | 鼠标底层的相对移动。使用Open打开设备后才可以使用它。这个是USB鼠标底层的一次移动，用于给使用者自己实现完整的鼠标移动。设置为普通鼠标和设置为游戏鼠标的移动距离不同，普通鼠标横坐标和纵坐标一次最大的移动距离都是127(是鼠标的物理相对移动坐标，不是屏幕坐标)，游戏鼠标横坐标和纵坐标一次最大的移动距离都是32767。
参数 | 参数1 横坐标：32位整型数。鼠标相对移动的横坐标。 参数2 纵坐标：32位整型数。鼠标相对移动的纵坐标。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.MoveRP 100,50 wyhkm.Close


MoveTo

名称 | MoveTo 鼠标移动
功能 | 鼠标移动到指定的屏幕坐标。使用Open打开设备后才可以使用它。相关的设置函数：SetMode、SetMousePosPrecision、SetMouseMoveTimeout、SetMousePosMaxOffset、SetAbsMouseScrnRes。
参数 | 参数1 横坐标：32位整型数。鼠标要移动到的横坐标。 参数2 纵坐标：32位整型数。鼠标要移动到的纵坐标。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.MoveTo 100,50 wyhkm.Close


Open

名称 | Open 打开设备
功能 | 打开无涯键鼠盒子，以便对它进行操作。不再操作设备时应该关闭设备，这样可以释放它占用的资源，要关闭设备使用Close。使用相对鼠标时（注意相对鼠标和相对移动的区别），当系统中屏幕或鼠标的设置发生变化时，需要重新打开设备（先关闭设备再打开设备）。比如：屏幕分辨率或屏幕DPI(缩放)变化、鼠标指针速度或“提高指针精确度”变化。
参数 参数1　设备ID：32位整型数。使用SearchDevice或者SearchDevice2可以获得它。
参数2　DPI模式：32位整型数。用于设置鼠标移动（MoveTo和MoveR2）和获得鼠标坐标（GetCursorPos和GetCursorPos2）时使用的坐标的DPI模式。系统为了支持程序界面缩放，使用了不同坐标，不同DPI模式对应不同坐标计算方式。DPI模式中的前三种都是windows系统中的模式，可查微软资料了解详细内容，后面几种是这三种模式的变化。可取值：
值 | 说明
0 | 每个显示器DPI感知，此模式不受系统DPI设置和显示器DPI设置影响，每个坐标与显示器像素是一一对应的，windows系统从WIN8.1开始支持此模式，WIN8.1以前等效于系统DPI感知。
1 | 系统DPI感知。在WIN8.1以前的系统中每个坐标与显示器像素是一一对应的，在WIN8.1及WIN8.1以后的系统中由于每个显示器可以设置不同DPI，每个坐标与显示器像素不总是一一对应关系，如果只有一个显示器，且开机、重启、注销重登录后没改过DPI，每个坐标与显示器像素还是一一对应的。
2 | 无DPI感知，进程没有处理DPI缩放时的状态。进程把系统DPI和显示器DPI当成是100%时的状态。缩放由系统处理，明显看到的现象是：如果DPI是100%时一切正常，如果DPI不是100%此时会导致程序界面模糊。
3 | DPI不可用，这个模式的主要目的是不释放和执行DPI检测进程。在符合的条件下，等效于每个显示器DPI感知；在不符合的条件下，DPI变换可能无法正常工作。符合的条件是：在WIN8.1以前的系统中系统DPI是100%或者当前上下文的DPI感知是系统DPI感知，在WIN8.1及WIN8.1以后的系统中所有显示器DPI是100%时或当前上下文的DPI感知是每个显示器DPI感知时可正常工作。
4 | 当前上下文的DPI感知。根据当前上下文决定DPI感知。
返回值 | 布尔值。成功返回true，失败返回false。WIN10以前的系统常见的失败原因是由于安全软件拦截或者系统权限问题导致DPI进程启动失败，可以把参数2设置为3禁用模块对DPI的支持解决这个问题。
vbs
例子 		Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
'执行操作
wyhkm.Close


Open2

名称 | Open2 打开设备
功能 | 打开无涯键鼠盒子，以便对它进行操作。不再操作设备时应该关闭设备，这样可以释放它占用的资源，要关闭设备使用Close。使用相对鼠标时（注意相对鼠标和相对移动的区别），当系统中屏幕或鼠标的设置发生变化时，需要重新打开设备（先关闭设备再打开设备）。比如：屏幕分辨率或屏幕DPI(缩放)变化、鼠标指针速度或“提高指针精确度”变化。
参数 参数1　第一个设备ID：32位整型数。使用SearchDevice或者SearchDevice2可以获得它。
参数2　第二个设备ID：32位整型数。使用SearchDevice或者SearchDevice2可以获得它。
参数3　DPI模式：32位整型数。用于设置鼠标移动（MoveTo和MoveR2）和获得鼠标坐标（GetCursorPos和GetCursorPos2）时使用的坐标的DPI模式。系统为了支持程序界面缩放，使用了不同坐标，不同DPI模式对应不同坐标计算方式。DPI模式中的前三种都是windows系统中的模式，可查微软资料了解详细内容，后面几种是这三种模式的变化。可取值：
值 | 说明
0 | 每个显示器DPI感知，此模式不受系统DPI设置和显示器DPI设置影响，每个坐标与显示器像素是一一对应的，windows系统从WIN8.1开始支持此模式，WIN8.1以前等效于系统DPI感知。
1 | 系统DPI感知。在WIN8.1以前的系统中每个坐标与显示器像素是一一对应的，在WIN8.1及WIN8.1以后的系统中由于每个显示器可以设置不同DPI，每个坐标与显示器像素不总是一一对应关系，如果只有一个显示器，且开机、重启、注销重登录后没改过DPI，每个坐标与显示器像素还是一一对应的。
2 | 无DPI感知，进程没有处理DPI缩放时的状态。进程把系统DPI和显示器DPI当成是100%时的状态。缩放由系统处理，明显看到的现象是：如果DPI是100%时一切正常，如果DPI不是100%此时会导致程序界面模糊。
3 | DPI不可用，这个模式的主要目的是不释放和执行DPI检测进程。在符合的条件下，等效于每个显示器DPI感知；在不符合的条件下，DPI变换可能无法正常工作。符合的条件是：在WIN8.1以前的系统中系统DPI是100%或者当前上下文的DPI感知是系统DPI感知，在WIN8.1及WIN8.1以后的系统中所有显示器DPI是100%时或当前上下文的DPI感知是每个显示器DPI感知时可正常工作。
4 | 当前上下文的DPI感知。根据当前上下文决定DPI感知。
返回值 | 布尔值。成功返回true，失败返回false。WIN10以前的系统常见的失败原因是由于安全软件拦截或者系统权限问题导致DPI进程启动失败，可以把参数3设置为3禁用模块对DPI的支持解决这个问题。
vbs
例子 		Dim DevId1,DevId2
DevId1=wyhkm.SearchDevice(&h1234&,&hABCD&,2)
If DevId1=-1 Then
MsgBox "未找到无涯键鼠盒子(键盘模式)",4096
wscript.quit
End If
DevId2=wyhkm.SearchDevice(&h1234&,&hABCD&,3)
If DevId2=-1 Then
MsgBox "未找到无涯键鼠盒子(鼠标模式)",4096
wscript.quit
End If
If Not wyhkm.Open2(DevId1,DevId2,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
'执行操作
wyhkm.Close


OutputString

名称 | OutputString 输出字符串
功能 | 用于向需要打字输入文本的地方输出字符串。使用Open打开设备后才可以使用它。设置输出字符串的模式使用SetMode，设置输出速度使用SetKeyInterval。如果输出的中文是乱码，则需要修改输出字符串的模式。要注意当前输入法，有的输入法不支持这样输入，会有中文无法输出或者全部无法输出的问题。
参数 | 参数1 字符串：BSTR类型。要输出的字符串。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.OutputString "输出字符串测试" wyhkm.Close


ReleaseKeyboard

名称 | ReleaseKeyboard 释放键盘按键
功能 | 把无涯键鼠盒子中键盘按下的键全部弹起。使用Open打开设备后才可以使用它。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.KeyDown "A" wyhkm.DelayRnd 90,120 wyhkm.ReleaseKeyboard wyhkm.Close


ReleaseMouse

名称 | ReleaseMouse 释放鼠标按键
功能 | 把无涯键鼠盒子中鼠标按下的键全部弹起。使用Open打开设备后才可以使用它。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.LeftDown wyhkm.DelayRnd 90,120 wyhkm.ReleaseMouse wyhkm.Close


RightClick

名称 | RightClick 鼠标右键单击
功能 | 鼠标右键单击。使用Open打开设备后才可以使用它。设置鼠标键按下和弹起时间间隔使用SetMouseInterval。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.RightClick wyhkm.Close


RightDoubleClick

名称 | RightDoubleClick 鼠标右键双击
功能 | 鼠标右键双击。使用Open打开设备后才可以使用它。设置鼠标键按下和弹起时间间隔使用SetMouseInterval。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.RightDoubleClick wyhkm.Close


RightDown

名称 | RightDown 鼠标右键按下
功能 | 鼠标右键按下。使用Open打开设备后才可以使用它。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.RightDown wyhkm.DelayRnd 90,120 wyhkm.RightUp wyhkm.Close


RightUp

名称 | RightUp 鼠标右键弹起
功能 | 鼠标右键弹起。使用Open打开设备后才可以使用它。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.RightDown wyhkm.DelayRnd 90,120 wyhkm.RightUp wyhkm.Close


SearchDevice

名称 | SearchDevice 查找设备
功能 | 查找无涯键鼠盒子。
参数 参数1　VID：32位整型数。每个无涯键鼠盒子的值可能不一样，可用工具查看。值为65536时忽略此搜索条件，查找到的无涯键鼠盒子的VID可以为任意值。
参数2　PID：32位整型数。每个无涯键鼠盒子的值可能不一样，可用工具查看。值为65536时忽略此搜索条件，查找到的无涯键鼠盒子的PID可以为任意值。
参数3　设备模式：32位整型数。用于设置查找的无涯键鼠盒子的模式。可取值如下：
值 | 说明
0 | 所有模式
1 | 键鼠模式
2 | 键盘模式
3 | 鼠标模式
返回值 | 32位整型数。一个临时的设备ID号，只对当前模块有效。没找到或者失败返回-1。
vbs
例子 		MsgBox "设备ID号:" & CStr(wyhkm.SearchDevice(&h1234&,&hABCD&,0)),4096


SearchDevice2

名称 | SearchDevice2 查找设备
功能 | 查找无涯键鼠盒子。
参数 参数1　VID：32位整型数。每个无涯键鼠盒子的值可能不一样，可用工具查看。值为65536时忽略此搜索条件，查找到的无涯键鼠盒子的VID可以为任意值。
参数2　PID：32位整型数。每个无涯键鼠盒子的值可能不一样，可用工具查看。值为65536时忽略此搜索条件，查找到的无涯键鼠盒子的PID可以为任意值。
参数3　序列号：32位整型数。每个无涯键鼠盒子的值都不一样，可用工具查看。
参数4　设备模式：32位整型数。用于设置查找的无涯键鼠盒子的模式。可取值如下：
值 | 说明
0 | 所有模式
1 | 键鼠模式
2 | 键盘模式
3 | 鼠标模式
返回值 | 32位整型数。一个临时的设备ID号，只对当前模块有效。没找到或者失败返回-1。
vbs
例子 		MsgBox "设备ID号:" & CStr(wyhkm.SearchDevice2(&h1234&,&hABCD&,&h12345678&,1))


SearchDeviceAll

名称 | SearchDeviceAll 查找全部设备
功能 | 查找符合条件的全部无涯键鼠盒子。
参数 参数1　VID：32位整型数。每个无涯键鼠盒子的值可能不一样，可用工具查看。值为65536时忽略此搜索条件，查找到的无涯键鼠盒子的VID可以为任意值。
参数2　PID：32位整型数。每个无涯键鼠盒子的值可能不一样，可用工具查看。值为65536时忽略此搜索条件，查找到的无涯键鼠盒子的PID可以为任意值。
参数4　设备模式：32位整型数。用于设置查找的无涯键鼠盒子的模式。可取值如下：
值 | 说明
0 | 所有模式
1 | 键鼠模式
2 | 键盘模式
3 | 鼠标模式
4096 | 返回BSTR类型字符串
返回值 | 变体型，子类型是安全数组或BSTR类型，具体是哪种子类型由参数4决定。存放找到的临时设备ID号，只对当前模块有效。如果是安全数组，数组元素是变体型(长整形数))，未找到设备或失败时返回的安全数组大小是0。如果是BSTR类型，格式为“设备ID1|设备ID2|...”的形式，未找到设备或者失败时返回空字符串。
vbs
例子 		MsgBox "设备ID号:" & Join(wyhkm.SearchDeviceAll(&h1234&,&hABCD&,0),"|")


SetAbsMouseScrnRes

名称 | SetAbsMouseScrnRes 设置绝对鼠标屏幕分辨率
功能 | 设置绝对鼠标移动所需的主显示器的屏幕分辨率。使用Open打开设备后才可以使用它。有关函数：MoveTo、MoveR2。
参数 | 参数1 宽度：32位整型数。参数1和参数2都取0时，设置屏幕分辨率为当前系统主显示器的屏幕分辨率。 参数2 高度：32位整型数。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.SetAbsMouseScrnRes 800,600 wyhkm.Close


SetDevDescInfo

名称 | SetDevDescInfo 设置设备描述信息
功能 | 设置无涯键鼠盒子的设备描述信息。这个函数设置无涯键鼠盒子的USB接口信息后，由于设备信息改变，系统会重新识别设备和自动安装驱动，需要等待几分钟或更长时间才能正常使用，这个过程中不要拔出盒子，否则会导致系统安装驱动失败。修改后需要关闭设备，等待系统安装驱动完成后再查找和打开设备，否则有些功能会受到影响，无法正常工作。无涯键鼠盒子基础版二代的固件版本大于等于1.2.0才支持此函数。使用Open打开设备后才可以使用它。
参数 参数1　VID：32位整形数。USB接口的制造商ID。可设置值的范围0-65535。值为65536时不修改无涯键鼠盒子VID值。
参数2　PID：32位整形数。USB接口的产品ID。可设置值的范围0-65535。值为65536时不修改无涯键鼠盒子PID值。
参数3　版本：32位整形数。USB接口的设备版本。可设置值的范围0-65535。值为65536时不修改无涯键鼠盒子版本值。
参数4　制造商名：变体型（32位整型数或BSTR类型）。USB接口的制造商名。设置制造商名是字符串。不修改制造商名时使用32位整型数，值为1。
参数5　产品名：变体型（32位整型数或BSTR类型）。USB接口的产品名。设置产品名是字符串。不修改产品名时使用32位整型数，值为1。
参数6　模式：32位整形数。可取值如下：
值 | 说明
0 | 取消临时设置。
1 | 临时设置，断电（USB接口停电或拔出无涯键鼠盒子）后恢复。
2 | 永久设置，断电后不会恢复，但有设置次数限制，不断电只能设置5次。
参数7　是否鼠标：布尔值。取false时，自动设置设备描述信息，如果同时有键盘模式或者鼠标模式的设备，设置键盘模式的设备的设备描述信息。取true时，自动设置设备描述信息，如果同时有键盘模式或者鼠标模式的设备，设置鼠标模式的设备的设备描述信息。
返回值 | 布尔值。成功返回true，失败返回false。
vbs
例子 		Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
//修改设备描述信息，PID和制造商名不修改
wyhkm.SetDevDescInfo &h1235&,&h10000&,&h0101&,1,"Mouse",1,false
wyhkm.Close


SetKeyInterval

名称 | SetKeyInterval 设置按键时间间隔
功能 | 设置键盘按下和弹起之间的时间间隔，只对当前的设备对象有效。具体的时间间隔是个一定范围内的随机值，也可以设置成固定值。默认按键时间间隔是个100毫秒附近的随机值。使用Open打开设备后才可以使用它。有关函数：KeyPress、OutputString。
参数 | 参数1 最短时间：32位整型数。单位毫秒。 参数2 最长时间：32位整型数。单位毫秒。最长时间等于最短时间时，时间间隔是固定值。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.SetKeyInterval 100,150 wyhkm.Close


SetLightMode

名称 | SetLightMode 设置指示灯模式
功能 | 设置无涯键鼠盒子的指示灯模式。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0才支持此函数。使用Open打开设备后才可以使用它。
参数 参数1　模式：无符号32位整形数。可取值如下：
值 | 说明
0 | 闪烁(默认模式)
1 | 灯亮
2 | 灯灭
8 | 模式不复位，盒子复位时模式不变，可与其它值做位或运算组合使用
参数2　是否鼠标：布尔值。取false时，自动设置指示灯模式，如果同时有键盘模式或者鼠标模式的设备，设置键盘模式的设备的指示灯模式。取true时，自动设置指示灯模式，如果同时有键盘模式或者鼠标模式的设备，设置鼠标模式的设备的指示灯模式。
返回值 | 布尔值。成功返回true，失败返回false。
vbs
例子 		Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
wyhkm.SetLightMode(1,false)
wyhkm.Close


SetMode

名称 | SetMode 设置模式
功能 | 设置无涯键鼠盒子的工作模式，只对当前的设备对象有效。使用Open打开设备后才可以使用它。
参数 参数1　属性：32位整型数。
参数2　模式：32位整型数。
属性 | 属性说明 | 模式 | 模式说明
2 | 鼠标移动的方式，0是仿真相对鼠标移动（默认模式），可通过一个或多个值进行选择，同时选择多个值用或运算进行组合。有关函数：MoveTo、MoveR、MoveR2。鼠标移动模式常用值介绍。 | 1 | 快速移动，只追求鼠标移动速度，不模仿手动操纵鼠标的移动方式。
 |  | 2 | 绝对鼠标移动，通常物理鼠标只有相对移动，这个是绝对移动，绝对移动只能在主显示器内移动，使用后MoveTo和MoveR2以绝对移动方式进行，需要无涯键鼠盒子开启“绝对鼠标”模式或者“相对鼠标+绝对鼠标”模式。注意：MoveTo没在这里设置绝对鼠标移动也能用相对鼠标实现绝对移动，MoveR2在这里设置绝对鼠标移动后会用绝对鼠标实现相对移动。
 |  | 4 | 基础移动模式，移动到指定坐标只能在鼠标没使用“提高指针精确度”且“选择指针移动速度”在中间（物理鼠标相对移动坐标和屏幕坐标的比例是1:1），win10的Dpi是100%时使用，移动过程中不会修正其它鼠标移动的影响，优点是速度快些。使用绝对鼠标移动时无效，对MoveR无效。
 |  | 0 | 变速模式，开始加速，结束减速。使用快速移动时无效。
 |  | 8 | 匀速模式，无加减速，距离短时会降低速度。使用快速移动时无效，对于MoveTo和MoveR2在绝对鼠标移动和基础移动模式都没使用时无效。
 |  | 16 | 定速模式，无加减速，距离短时不降低速度。使用快速移动时无效，对于MoveTo和MoveR2在绝对鼠标移动和基础移动模式都没使用时无效。
3 | 鼠标滚轮滚动方式，有关函数：MouseWheel | 0 | 仿真滚动，模仿手动操作鼠标滚轮的方式，速度较慢(默认模式)。
 |  | 1 | 快速滚动，只追求鼠标滚轮滚动速度，不模仿手动操纵鼠标滚轮的方式。
4 | 输出字符串编码，不同窗口接受的字符串编码不同，选择错了会收到乱码，有关函数：OutputString | 0 | 输出ANSI字符串(默认模式)
 |  | 1 | 输出UNICODE字符串
 |  | 2 | 输出ANSI字符串，与模式0的差异是：在输出半角数字、字母和部分字符时，和手动输入一样，速度更快，但更易受键盘或输入法干扰。
 |  | 3 | 输出UNICODE字符串，与模式1的差异是：在输出半角数字、字母和部分字符时，和手动输入一样，速度更快，但更易受键盘或输入法干扰。
 |  | 4 | 使用剪贴板粘贴输出字符串。优点是输出字符多时速度更快且不受输入法影响，缺点是会改写剪贴板的内容和不支持虚拟机外操作虚拟机内。
5 | 键盘鼠标同步方式，同步是等待盒子的数据被电脑硬件接收，但不代表系统已经处理了该数据，有时系统繁忙，电脑硬件接收到数据与系统处理该数据之间有时间差，一般这个时间较短，多数情况不到1毫秒。0是全部同步（默认模式），异步可通过一个或多个值进行选择，同时选择多个值用或运算进行组合。有关函数：KeyPress、KeyDown、KeyUp、LeftClick、RightClick、MiddleClick、XBtn1Click、XBtn2Click、LeftDoubleClick、RightDoubleClick、MiddleDoubleClick、XBtn1DoubleClick、XBtn2DoubleClick、LeftDown、RightDown、MiddleDown、XBtn1Down、XBtn2Down、LeftUp、RightUp、MiddleUp、XBtn1Up、XBtn2Up、MoveRP、MouseWheelP、OutputString | 1 | 键盘异步，不等待键盘动作完成直接返回
 |  | 2 | 鼠标异步，不等待鼠标动作完成直接返回
6 | 随机延时的概率分布方式。有关函数：DelayRnd、KeyPress、LeftClick、RightClick、MiddleClick、XBtn1Click、XBtn2Click、LeftDoubleClick、RightDoubleClick、MiddleDoubleClick、XBtn1DoubleClick、XBtn2DoubleClick、OutputString | 0 | 延时随机均匀分布，延时值的概率相同(默认模式)
 |  | 1 | 延时随机偏小分布，延时值越小，概率越高，最大值的概率接近0
7 | 延时方式。有关函数：DelayRnd、KeyPress、LeftClick、RightClick、MiddleClick、XBtn1Click、XBtn2Click、LeftDoubleClick、RightDoubleClick、MiddleDoubleClick、XBtn1DoubleClick、XBtn2DoubleClick、OutputString | 0 | 不处理窗口消息(默认模式)
 |  | 1 | 处理窗口消息
返回值 | 布尔值。成功返回true，失败返回false。
vbs
例子 		Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
wyhkm.SetMode 2,1
wyhkm.Close


SetMouseInterval

名称 | SetMouseInterval 设置鼠标时间间隔
功能 | 设置鼠标键按下和弹起之间的时间间隔，只对当前的设备对象有效。具体的时间间隔是个一定范围内的随机值，也可以设置成固定值。默认鼠标时间间隔是个100毫秒附近的随机值。使用Open打开设备后才可以使用它。有关函数：LeftClick、RightClick、MiddleClick、LeftDoubleClick、RightDoubleClick、MiddleDoubleClick。
参数 | 参数1 最短时间：32位整型数。单位毫秒。 参数2 最长时间：32位整型数。单位毫秒。最长时间等于最短时间时，时间间隔是固定值。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.SetMouseInterval 100,150 wyhkm.Close


SetMouseMoveTimeout

名称 | SetMouseMoveTimeout 设置鼠标移动超时时间
功能 | 当鼠标移动时间超过设定时间时，停止移动并返回false。只对当前的设备对象有效。使用Open打开设备后才可以使用它。相关函数：MoveTo。
参数 | 参数1 时间：32位整型数。鼠标移动超时时间，单位毫秒。取值为-1时，取消超时时间限制。默认值是10秒。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.SetMouseMoveTimeout 50000 wyhkm.Close


SetMousePosMaxOffset

名称 | SetMousePosMaxOffset 设置鼠标坐标最大偏移
功能 | 手动鼠标移动时，通常不会每次都点到相同的坐标，有一定的随机范围，这里就是模拟这个行为设置的坐标随机偏差最大值。只对当前的设备对象有效。使用Open打开设备后才可以使用它。相关函数：MoveTo。
参数 | 参数1 最大偏移：32位整型数。坐标随机偏差最大值。默认值是0。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.SetMousePosMaxOffset 2 wyhkm.Close


SetMousePosPrecision

名称 | SetMousePosPrecision 设置鼠标坐标精度
功能 | 当系统设置中的鼠标移动速度过快时，鼠标坐标无法精确到每个像素，会在目标坐标附近抖动很久，这个时候就要调大鼠标精度，容许鼠标移动到目标坐标时有少量偏差。只对当前的设备对象有效。使用Open打开设备后才可以使用它。相关函数：MoveTo、MoveR2。
参数 | 参数1 精度：32位整型数。最大允许的坐标偏差量。默认值是0。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.SetMousePosPrecision 1 wyhkm.Close


SetMouseSpeed

名称 | SetMouseSpeed 设置鼠标速度
功能 | 设置鼠标移动速度。它设置的是键鼠盒子鼠标移动速度的最大值。快速移动模式和MoveRP不受它影响。使用Open打开设备后才可以使用它。有关函数：MoveR、MoveR2、MoveTo。
参数 | 参数1 鼠标速度：布尔值。无符号32位整型数。取值范围是5-100，值越大速度越快，默认值是45。使用了这个函数不代表速度最大值就完全固定了，移动函数的最大速度有小范围的随机波动（快递移动模式和MoveRP除外）。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.SetMouseSpeed 20 wyhkm.Close


SetOSMouseSpeed

名称 | SetOSMouseSpeed 设置系统鼠标速度
功能 | 设置系统鼠标速度。系统的鼠标速度在系统设置中的名称是“选择指针移动速度”。它设置的是物理鼠标移动速度与系统中移动速度的比例。
参数 | 参数1 速度：32位整型数。这个值的范围是1-20，值越大，在系统中的速度越快，系统的默认值是10。 参数2 是否保存：布尔值。取true时，系统重启后仍然有效；取false时，系统重启后恢复设置。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | SetOSMouseSpeed(10,false)


SetResetMode

名称 | SetResetMode 设置复位模式
功能 | 设置无涯键鼠盒子的延时复位模式。这个函数设置延时复位的模式，启用延时复位功能使用SetResetTime。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0才支持此函数。使用Open打开设备后才可以使用它。
参数 参数1　模式：32位整形数。可取值如下：
值 | 说明
0 | 盒子硬件复位(默认模式)
1 | 键盘鼠标按键状态复位
参数2　是否鼠标：布尔值。取false时，自动设置复位模式，如果同时有键盘模式或者鼠标模式的设备，设置键盘模式的设备的复位模式。取true时，自动设置复位模式，如果同时有键盘模式或者鼠标模式的设备，设置鼠标模式的设备的复位模式。
返回值 | 布尔值。成功返回true，失败返回false。
vbs
例子 		Dim DevId
DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0)
If DevId=-1 Then
MsgBox "未找到无涯键鼠盒子",4096
wscript.quit
End If
If Not wyhkm.Open(DevId,0) Then
MsgBox "打开无涯键鼠盒子失败",4096
wscript.quit
End If
wyhkm.SetResetMode(1,false)
Do
wyhkm.SetResetTime(1000,false)
wyhkm.DelayRnd(90,120)
Loop
wyhkm.Close


SetResetTime

名称 | SetResetTime 设置复位时间
功能 | 设置无涯键鼠盒子的延时复位时间。盒子内有个计时器，使用该函数后，时间到了就会使盒子复位。无论使用这个函数还是其它访问盒子的键鼠命令，都会使计时器重新计时。复位后计时器失效，需要使用该函数重新设置。无涯键鼠盒子有时在特殊情况下会出现通讯异常，或者程序突然退出导致按下的键无法弹起，这个函数可以免去这些情况下插拔盒子烦恼。如果条件允许，尽量在停止无涯键鼠盒子操作后关闭延时复位。因为正常的键盘和鼠标除非接触不良，一般不会出现复位现象。无涯键鼠盒子基础版一代不支持此函数。使用Open打开设备后才可以使用它。 不会访问盒子的函数有：GetVersion、 IsOpen、 Close、 SetMode、 SetKeyInterval、 SetMouseInterval、 SetAbsMouseScrnRes、 SetMouseMoveTimeout、 SetMousePosMaxOffset、 SetMousePosPrecision、 DelayRnd、 CheckPressedKeys、 IsOSMouseAccelerateEnabled、 EnableOSMouseAccelerate、 GetOSMouseSpeed、 SetOSMouseSpeed、GetDevString。
参数 | 参数1 延时时间：32位整形数。单位毫秒。取0时关闭延时复位。非0时最小值是50毫秒，最大值是19小时。 参数2 是否鼠标：布尔值。取false时，自动设置延时复位时间，如果同时有键盘模式或者鼠标模式的设备，设置键盘模式的设备的延时复位时间。取true时，自动设置延时复位时间，如果同时有键盘模式或者鼠标模式的设备，设置鼠标模式的设备的延时复位时间。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If Do wyhkm.SetResetTime(1000,false) wyhkm.DelayRnd(90,120) Loop wyhkm.Close


VerifyUserData

名称 | VerifyUserData 验证用户数据
功能 | 用于验证用户使用“无涯键鼠盒子修改器”写入的字符串和这里的字符串是否相同。无涯键鼠盒子基础版一代的固件版本大于等于1.2.0才支持此函数。使用Open打开设备后才可以使用它。
参数 | 参数1 字符串：BSTR类型。要输出的字符串。 参数2 是否鼠标：布尔值。取false时，自动验证用户数据，如果同时有键盘模式或者鼠标模式的设备，验证键盘模式的设备的用户数据。取true时，自动验证用户数据，如果同时有键盘模式或者鼠标模式的设备，验证鼠标模式的设备的用户数据。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If MsgBox "验证用户数据：" & CStr(wyhkm.VerifyUserData("我的用户数据",false)),4096 wyhkm.Close


VerifyUserData2

名称 | VerifyUserData2 验证用户数据2
功能 | 用于验证用户使用“无涯键鼠盒子修改器”写入的字符串和这里的字符串是否相同。VerifyUserData函数的升级版，用户数据和验证数据分离，其他人无法通过验证数据获得用户数据。由于固件设计原因，VerifyUserData和VerifyUserData2不支持同时使用。无涯键鼠盒子基础版一代不支持此函数。使用Open打开设备后才可以使用它。
参数 | 参数1 字符串：BSTR类型。要输出的字符串。 参数2 是否鼠标：布尔值。取false时，自动验证用户数据，如果同时有键盘模式或者鼠标模式的设备，验证键盘模式的设备的用户数据。取true时，自动验证用户数据，如果同时有键盘模式或者鼠标模式的设备，验证鼠标模式的设备的用户数据。
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If MsgBox "验证用户数据：" & CStr(wyhkm.VerifyUserData("1234567890ABCDEF1234567890ABCDEF",false)=wyhkm.GetSerialNumber(false)),4096 wyhkm.Close


XBtn1Click

名称 | XBtn1Click 鼠标XButton1键单击
功能 | 鼠标XButton1键单击。使用Open打开设备后才可以使用它。设置鼠标键按下和弹起时间间隔使用SetMouseInterval。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.XBtn1Click wyhkm.Close


XBtn1DoubleClick

名称 | XBtn1DoubleClick 鼠标XButton1键双击
功能 | 鼠标XButton1键双击。使用Open打开设备后才可以使用它。设置鼠标键按下和弹起时间间隔使用SetMouseInterval。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.XBtn1DoubleClick wyhkm.Close


XBtn1Down

名称 | XBtn1Down 鼠标XButton1键按下
功能 | 鼠标XButton1键按下。使用Open打开设备后才可以使用它。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.XBtn1Down wyhkm.Close


XBtn1Up

名称 | XBtn1Up 鼠标XButton1键弹起
功能 | 鼠标XButton1键弹起。使用Open打开设备后才可以使用它。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.XBtn1Up wyhkm.Close


XBtn2Click

名称 | XBtn2Click 鼠标XButton2键单击
功能 | 鼠标XButton2键单击。使用Open打开设备后才可以使用它。设置鼠标键按下和弹起时间间隔使用SetMouseInterval。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.XBtn2Click wyhkm.Close


XBtn2DoubleClick

名称 | XBtn2DoubleClick 鼠标XButton2键双击
功能 | 鼠标XButton2键双击。使用Open打开设备后才可以使用它。设置鼠标键按下和弹起时间间隔使用SetMouseInterval。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.XBtn2DoubleClick wyhkm.Close


XBtn2Down

名称 | XBtn2Down 鼠标XButton2键按下
功能 | 鼠标XButton2键按下。使用Open打开设备后才可以使用它。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.XBtn2Down wyhkm.Close


XBtn2Up

名称 | XBtn2Up 鼠标XButton2键弹起
功能 | 鼠标XButton2键弹起。使用Open打开设备后才可以使用它。无涯键鼠盒子基础版二代的固件版本大于等于1.1.0且设置为游戏鼠标或绝对鼠标才支持此函数。
参数 |
返回值 | 布尔值。成功返回true，失败返回false。
vbs 例子 | Dim DevId DevId=wyhkm.SearchDevice(&h1234&,&hABCD&,0) If DevId=-1 Then MsgBox "未找到无涯键鼠盒子",4096 wscript.quit End If If Not wyhkm.Open(DevId,0) Then MsgBox "打开无涯键鼠盒子失败",4096 wscript.quit End If wyhkm.XBtn2Up wyhkm.Close