我正在尝试枚举COM端口的“友好名称”.随着USB串行设备在运行时连接和断开,端口可能会动态变化.
基于this question中描述的可能方法,我试图使用SetupDiGetClassDevs方法.
我找到了this example code,但它是为旧版本的setupapi单元编写的(homepages.borland.com的原始链接当然不起作用).
我尝试使用当前JVCL(JVCL340CompleteJCL221-Build3845)中的setupapi单元,但它似乎与Delphi 7不兼容.我收到编译器错误:
if SetupDiGetDeviceRegistryProperty(DevInfoHandle,DeviceInfoData,RegProperty,@PropertyRegDataType,@S1[1],requiredSize,@requiredSize) then begin
在函数SetupDiGetDeviceRegistryProperty的调用中,
我在参数@PropertyRegDataType和@requiredSize上得到错误“实际和形式参数的类型必须相同”.
Delphi3000站点说该代码是在2004年编写的,适用于Delphi 7,所以我不知道为什么它现在不适用于Delphi 7,除非setupapi已经改变.是否有人熟悉setupapi可能导致这些问题的更改?
我正在测试一个简单的控制台程序.用法声明是“窗口,
sysutils的,
类,
SETUPAPI,
注册;”
主要计划是:
begin ComPortStringList := SetupEnumAvailableComPorts; for Index := 0 to ComPortStringList.Count - 1 do writeln(ComPortStringList[Index]); end; end.