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