使用SetupDiGetClassDevs在Delphi中进行串行端口枚举
我正在尝试枚举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的调用中, Delphi3000站点说该代码是在2004年编写的,适用于Delphi 7,所以我不知道为什么它现在不适用于Delphi 7,除非setupapi已经改变.是否有人熟悉setupapi可能导致这些问题的更改? 我正在测试一个简单的控制台程序.用法声明是“窗口, 主要计划是: begin ComPortStringList := SetupEnumAvailableComPorts; for Index := 0 to ComPortStringList.Count - 1 do writeln(ComPortStringList[Index]); end; end. 解决方法
看起来PDAord类型的一些参数被SetupApi.pas中的var DWord替换.您只需要在代码中从这些参数中删除“@”,如下所示:
if SetupDiGetDeviceRegistryProperty(DevInfoHandle,PropertyRegDataType,RequiredSize) then begin (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |