Table of Contents

HKMSetMode 设置模式

功能

设置键鼠模拟器的工作模式,只对当前打开的设备有效

参数

  • 参数1: 设备对象:无类型指针。使用HKMOpen可以创建它。
  • 参数2: 属性:无符号32位整型数
  • 参数3: 模式:无符号32位整型数

属性说明

属性值: 2

说明:用于设置鼠标的移动方式。可与下方模式值组合,实现多种鼠标移动效果。

  • 模式值: 0:相对坐标移动(默认模式),变速模式,开始加速,结束减速。使用快速移动时无效。
  • 模式值: 1:快速移动,只追求鼠标移动速度,不模仿手动操纵鼠标的移动方式
  • 模式值: 2:绝对鼠标移动,通常物理鼠标只有相对移动,这个是绝对移动,绝对移动只能在主显示器内移动,使用后HKMMoveTo和HKMMoveR2以绝对移动方式进行,需要键鼠模拟器开启“绝对鼠标”模式或者“相对鼠标+绝对鼠标”模式。注意:HKMMoveTo没在这里设置绝对鼠标移动也能用相对鼠标实现绝对移动,HKMMoveR2在这里设置绝对鼠标移动后会用绝对鼠标实现相对移动。
  • 模式值: 4:基础移动模式,移动到指定坐标只能在鼠标没使用“提高指针精确度”且“选择指针移动速度”在中间(物理鼠标相对移动坐标和屏幕坐标的比例是1:1),win10的Dpi是100%时使用,移动过程中不会修正其它鼠标移动的影响,优点是速度快些。使用绝对鼠标移动时无效,对HKMMoveR无效。
  • 模式值: 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是全部同步(默认模式),有关函数:HKMKeyPressHKMKeyDownHKMKeyUpHKMLeftClickHKMRightClickHKMMiddleClickHKMXBtn1ClickHKMXBtn2ClickHKMLeftDoubleClickHKMRightDoubleClickHKMMiddleDoubleClickHKMXBtn1DoubleClickHKMXBtn2DoubleClickHKMLeftDownHKMRightDownHKMMiddleDownHKMXBtn1DownHKMXBtn2DownHKMLeftUpHKMRightUpHKMMiddleUpHKMXBtn1UpHKMXBtn2UpHKMMoveRPHKMMouseWheelPHKMOutputString

  • 模式值: 0: 全部同步(默认模式)
  • 模式值: 1:键盘异步,不等待键盘动作完成直接返回
  • 模式值:2:鼠标异步,不等待鼠标动作完成直接返回

属性值:6

说明:随机延时的概率分布方式

相关函数:HKMDelayRndHKMKeyPressHKMLeftClickHKMRightClickHKMMiddleClickHKMXBtn1ClickHKMXBtn2ClickHKMLeftDoubleClickHKMRightDoubleClickHKMMiddleDoubleClickHKMXBtn1DoubleClickHKMXBtn2DoubleClickHKMOutputString

  • 模式值:0:延时随机均匀分布,延时值的概率相同(默认模式)
  • 模式值:1:延时随机偏小分布,延时值越小,概率越高,最大值的概率接近0

属性值:7

说明:延时方式

相关函数:HKMDelayRndHKMKeyPressHKMLeftClickHKMRightClickHKMMiddleClickHKMXBtn1ClickHKMXBtn2ClickHKMLeftDoubleClickHKMRightDoubleClickHKMMiddleDoubleClickHKMXBtn1DoubleClickHKMXBtn2DoubleClickHKMOutputString

  • 模式值:0:不处理窗口消息(默认模式)
  • 模式值:1:处理窗口消息

属性值:32

说明:字符串类型

函数参数和返回值中的字符串类型,用于解决有的编程工具对Unicode字符串支持不好的问题。有关函数:HKMGetDevStringHKMKeyPressHKMKeyDownHKMKeyUpHKMOutputStringHKMVerifyUserDataHKMVerifyUserData2

  • 模式值:0:函数的字符串参数使用Unicode编码(默认模式)
  • 模式值:1:函数的字符串参数使用Ansi编码

返回值

布尔值。成功返回True,失败返回False

C#例子

uint dwDevId;
IntPtr lpDev;
dwDevId = SkmCore.HKMSearchDevice(0x1234, 0xABCD, 0);
if (dwDevId == 0xFFFFFFFF)
{
    Console.WriteLine("未找到键鼠模拟器");
    return;
}
lpDev = SkmCore.HKMOpen(dwDevId, 0);
if (lpDev == IntPtr.Zero)
{
    Console.WriteLine("打开键鼠模拟器失败");
    return;
}
SkmCore.HKMSetMode(lpDev, 2, 1);
SkmCore.HKMClose(lpDev);

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