Table of Contents

HKMGetDevString 获得设备字符串

功能

获得设备相关的字符串

参数

  • 参数1: 设备对象:无类型指针。使用HKMOpen可以创建它。
  • 参数2: 序号:无符号32位整型数。用于指定要获取的字符串序号,可取值如下:
    • 1: 制造商
    • 2: 产品名
  • 参数3: 是否鼠标:布尔值
    • True: 自动获得设备字符串,如果同时有键盘模式或者鼠标模式的设备,获得鼠标模式的设备字符串
    • False: 自动获得设备字符串,如果同时有键盘模式或者鼠标模式的设备,获得键盘模式的设备字符串
  • 参数4: 字符串长度:无符号32位整型数指针。用于接收返回值为非NULL时的字符串长度(字符串长度包含'\0')。需要时可将取值设为NULL。

返回值

字符串(Unicode/Ansi)。失败返回NULL。成功返回字符串指针,字符串默认为Unicode字符串,也可以通过HKMSetMode修改为Ansi字符串。字符串指针在设备关闭时会被释放,不需要单独释放,但需要注意数据可能会被后续调用此函数的数据覆盖。

C#例子

uint dwDevId;
IntPtr lpDev;
string manufacturer;
dwDevId = SkmCore.HKMSearchDevice(0x1234, 0xABCD, 0);
if (dwDevId == 0xFFFFFFFF)
{
    Console.WriteLine("未找到键鼠模拟器");
    return;
}
lpDev = SkmCore.HKMOpen(dwDevId, 0);
if (lpDev == IntPtr.Zero)
{
    Console.WriteLine("打开键鼠模拟器失败");
    return;
}
manufacturer = SkmCore.HKMGetDevString(lpDev, 1, false);
if (manufacturer != null)
    Console.WriteLine($"制造商:{manufacturer}");
SkmCore.HKMClose(lpDev);

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=HKMGetDevString(lpDev,1,false,NULL);
if(lpStr!=NULL)
    printf("制造商:%S\n",lpStr);
HKMClose(lpDev);