|
楼主 |
发表于 2010-4-9 16:44:42
|
显示全部楼层
有一个好方法 ,刚才试了可行
通过读取注册表来获取,串口信息都是保存在注册表的这个位置
var
reg : TRegistry;
ts : TStrings;
i : integer;
sName,sPort:string;
slList:TStringList;
begin
reg := TRegistry.Create;
ts := TStringList.Create;
slList:=TStringList.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('hardware\devicemap\serialcomm',false);
reg.GetValueNames(ts);
slList.Sorted:=true;
for i := 0 to ts.Count -1 do begin
sName:=LowerCase(Trim(ts.Strings));
//得到串口名称
sPort := UpperCase(Trim(reg.ReadString(sName)));
if Copy(sPort,1,3) <> 'COM' then Continue;
sPort:=Copy(sPort,4,Length(sPort));
sPort:=FormatFloat('000',StrToInt(sPort));
slList.Add(sPort);
end;
slPort.Clear;
for i:=0 to slList.Count-1 do
slPort.Add('COM'+IntToStr(StrToInt(slList.Strings)));
finally
ts.Free;
reg.CloseKey;
reg.free;
end; |
|