我正在尝试枚举 COM 端口的“友好名称”。当 USB 串行设备在运行时连接和断开时,端口可能会动态变化。
基于中描述的可能方法这个问题,我正在尝试使用 SetupDiGetClassDevs 方法。
I found 这个示例代码,但它是为旧版本的 setupapi 单元编写的(到 homepages.borland.com 的原始链接当然不起作用)。
我尝试使用当前 JVCL 中的 setupapi 单元(JVCL340CompleteJCL221-Build3845),但它似乎与 Delphi 7 不兼容。我收到编译器错误:
if SetupDiGetDeviceRegistryProperty(DevInfoHandle,DeviceInfoData,
RegProperty,
@PropertyRegDataType,
@S1[1],RequiredSize,@RequiredSize) then begin
在函数调用中设置DiGetDeviceRegistryProperty,
我在参数上收到错误“实际参数和形式参数的类型必须相同”@PropertyRegDataType, and @RequiredSize.
Delphi3000 网站说该代码是在 2004 年编写的,适用于 Delphi 7,所以我不确定为什么它现在不能在 Delphi 7 上运行,除非 setupapi 已更改。有人熟悉可能导致这些问题的 setupapi 更改吗?
我正在使用一个简单的控制台程序进行测试。使用声明是“windows,
系统实用程序,
课程,
设置API,
登记处;”
主要程序是:
begin
ComPortStringList := SetupEnumAvailableComPorts;
for Index := 0 to ComPortStringList.Count - 1 do
writeln(ComPortStringList[Index]);
end;
end.