# 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);