我正在尝试列举COM端口的“友好名称”。随着USB串行设备在运行时连接和断开,端口可能会动态更改。根据这个问题描述的可能方法,我尝试使用SetupDiGetClassDevs方法。我找到了这个示例代码,但它是为旧版本的setupapi单元编写的(当然,原始链接到homepages.borland.com不起作用)。我尝试使用当前JVCL的setupapi单元(JVCL340CompleteJCL221-Build3845),但它似乎与Delphi 7不兼容。我得到编译器错误:
在调用函数SetupDiGetDeviceRegistryProperty时,我收到了关于参数@PropertyRegDataType和@RequiredSize的错误提示“实际参数和形式参数的类型必须相同”。
Delphi3000网站称该代码是2004年编写的,适用于Delphi 7,因此我不确定为什么它现在不能与Delphi 7一起使用,除非setupapi发生了变化。有没有人熟悉setupapi的更改可能导致这些问题?
我正在使用简单的控制台程序进行测试。使用语句为“windows,sysutils,classes,setupAPI,Registry;”
主要程序如下:
if SetupDiGetDeviceRegistryProperty(DevInfoHandle,DeviceInfoData,
RegProperty,
@PropertyRegDataType,
@S1[1],RequiredSize,@RequiredSize) then begin
在调用函数SetupDiGetDeviceRegistryProperty时,我收到了关于参数@PropertyRegDataType和@RequiredSize的错误提示“实际参数和形式参数的类型必须相同”。
Delphi3000网站称该代码是2004年编写的,适用于Delphi 7,因此我不确定为什么它现在不能与Delphi 7一起使用,除非setupapi发生了变化。有没有人熟悉setupapi的更改可能导致这些问题?
我正在使用简单的控制台程序进行测试。使用语句为“windows,sysutils,classes,setupAPI,Registry;”
主要程序如下:
begin
ComPortStringList := SetupEnumAvailableComPorts;
for Index := 0 to ComPortStringList.Count - 1 do
writeln(ComPortStringList[Index]);
end;
end.
Grzegorz Skoczylas
的答案,该答案适用于Windows 10上的Delphi 7(并且适用于内置和USB串口适配器COM端口)。 - AlainD