网上搜索相关内容后,自用的一个函数,代码如下:
function CheckComPort(ComPortName: string; var ComPortList: Tstrings): boolean;
var
reg: TRegistry; //uses 单元文件Registry
ts: TStrings; //键名
i: Integer;
tl: TStringList; //串口名称
nIndex: Integer;
begin
try
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('hardware\devicemap\serialcomm', False);
ts := TStringList.Create;
reg.GetValueNames(ts); //获取注册表中串口的 键名
tl := TStringList.Create;
for i := 0 to ts.Count - 1 do
begin
tl.Add(reg.ReadString(ts.Strings[i])); //根据键名,读取注册表中对应的串口名称(例如COM1)
end;
tl.Sort;
ComPortList := tl;
Result := tl.Find(ComPortName, nIndex);//查询是否存在
//ShowMessage(IntToStr((nIndex)));
finally
// tl.Free;
ts.Free;
reg.CloseKey;
reg.Free;
end;
end;