| 名称 | HKMOpen2 打开设备 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 功能 | 打开两个无涯键鼠盒子(一个键盘模式、一个鼠标模式),以便对它们进行操作。使用相对鼠标时(注意相对鼠标和相对移动的区别),当系统中屏幕或鼠标的设置发生变化时,需要重新打开设备(先关闭设备再打开设备)。比如:屏幕分辨率或屏幕DPI(缩放)变化、鼠标指针速度或“提高指针精确度”变化。 | ||||||||||||
| 参数 | 参数1 第一个设备ID:无符号32位整型数。使用HKMSearchDevice或者HKMSearchDevice2可以获得它。 参数2 第二个设备ID:无符号32位整型数。使用HKMSearchDevice或者HKMSearchDevice2可以获得它。 参数3 DPI模式:无符号32位整型数。用于设置鼠标移动(HKMMoveTo和HKMMoveR2)和获得鼠标坐标(HKMGetCursorPos和HKMGetCursorPos2)时使用的坐标的DPI模式。系统为了支持程序界面缩放,使用了不同坐标,不同DPI模式对应不同坐标计算方式。DPI模式中的前三种都是windows系统中的模式,可查微软资料了解详细内容,后面几种是这三种模式的变化。可取值:
|
||||||||||||
| 返回值 | 无类型指针。创建的设备对象,也可以看成句柄。失败返回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); |