我试图枚举COM端口的“友好名称”。当USB串行设备在运行时连接和断开时,端口可能会动态变化.
基于这个问题中描述的可能方法,我尝试使用SetupDiGetClassDevs方法。
我找到了此示例代码,但是它是为setupapi单元的旧版本编写的(当然,homepages.borland.com的原始链接不起作用)。
我尝试使用当前JVCL(JVCL340CompleteJCL 221-Build3845 3845)中的setupapi单元,但它似乎与Delphi 7不兼容。
if SetupDiGetDeviceRegistryProperty(DevInfoHandle,DeviceInfoData,
RegProperty,
@PropertyRegDataType,
@S1[1],RequiredSize,@RequiredSize) then begin
在对函数SetupDiGetDeviceRegistryProperty的调用中,我得到参数@PropertyRegDataType和@RequiredSize上的错误“实际参数和形式参数的类型必须相同”。
Delphi3000网站说这段代码是在2004年编写的,是为Delphi7编写的,所以我不知道为什么它现在不能与Delphi 7一起工作,除非setupapi已经改变了。是否有人熟悉可能导致这些问题的setupapi的更改?
我正在用一个简单的控制台程序进行测试。uses语句是“windows、sysutils、classes、setupAPI、Registry;”
主要方案是:
begin
ComPortStringList := SetupEnumAvailableComPorts;
for Index := 0 to ComPortStringList.Count - 1 do
writeln(ComPortStringList[Index]);
end;
end.
https://stackoverflow.com/questions/4999964
复制相似问题