【发布时间】:2013-06-17 10:29:35
【问题描述】:
我无法让 HidD_GetSerialNumberString 简单地给我一些设备的序列号。 在某些设备上它工作正常,但在其他设备上我得到的只是“ÿÿÿ”作为序列号。 我怀疑它与 Delphi 2009 和它的 unicode 有关,但我根本无法理解它。 有解决办法吗?
编辑(声明):
type
THidD_GetSerialNumberString = function(HidDeviceObject: THandle; Buffer: PWideChar; BufferLength: Integer): LongBool; stdcall;
var
HidD_GetSerialNumberString: THidD_GetSerialNumberString;
//in the LoadHid-function
@HidD_GetSerialNumberString := GetModuleSymbolEx(HidLib, 'HidD_GetSerialNumberString', Result);
用法:
var
test : PWideChar;
...
GetMem(test, 512);
if HidD_GetSerialNumberString(HidFileHandle, Test, 512) then
FSerialNumber := test; //FSerialNumber is WideString
FreeMem(test);
【问题讨论】:
-
请显示代码,特别是声明,并致电
HidD_GetSerialNumberString -
我使用的是JVCL的jvHidControllerClass.pas和Hid.pas
-
很好。请出示我要求的代码。
-
什么是 GetModuleSymbleEx?
-
在调用 api 之前您是否尝试过将缓冲区归零?
标签: delphi delphi-2009 hid