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是全部同步(默认模式),有关函数: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
- 模式值: 0: 全部同步(默认模式)
- 模式值: 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#例子
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);