首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用SetupDiGetClassDevs实现Delphi中的串口枚举

用SetupDiGetClassDevs实现Delphi中的串口枚举
EN

Stack Overflow用户
提问于 2011-02-15 04:44:56
回答 6查看 16K关注 0票数 4

我试图枚举COM端口的“友好名称”。当USB串行设备在运行时连接和断开时,端口可能会动态变化.

基于这个问题中描述的可能方法,我尝试使用SetupDiGetClassDevs方法。

我找到了此示例代码,但是它是为setupapi单元的旧版本编写的(当然,homepages.borland.com的原始链接不起作用)。

我尝试使用当前JVCL(JVCL340CompleteJCL 221-Build3845 3845)中的setupapi单元,但它似乎与Delphi 7不兼容。

代码语言:javascript
运行
复制
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;”

主要方案是:

代码语言:javascript
运行
复制
  begin
  ComPortStringList := SetupEnumAvailableComPorts;
  for Index := 0 to ComPortStringList.Count - 1 do
      writeln(ComPortStringList[Index]);
  end;
  end.
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4999964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档