On Mon, 31 Oct 2022 00:32:50 +0100, Werner Pamler via lazarus <lazarus@lists.lazarus-ide.org> wrote:
>Am 30.10.2022 um 19:42 schrieb Bo Berglund via lazarus >> When I am at it: >> Is there a way on Windows to enumerate the existing serial ports so I can >> put a >> selector list on the form? > >I have the following code in one of my projects (Windows-only). It >creates a comma-separated list to assigned to a ComboBox.Items.CommaText > >function GetSerialPortNames: string; >var > reg: TRegistry; > l, v: TStringList; > n: integer; >begin > l := TStringList.Create; > v := TStringList.Create; > reg := TRegistry.Create; > try > reg.Access := KEY_READ; > reg.RootKey := HKEY_LOCAL_MACHINE; > reg.OpenKey('\HARDWARE\DEVICEMAP\SERIALCOMM', false); > reg.GetValueNames(l); > for n := 0 to l.Count - 1 do > v.Add(PChar(reg.ReadString(l[n]))); > Result := v.CommaText; > finally > reg.Free; > l.Free; > v.Free; > end; >end; Thanks, I used the registry way since it was not so hard to do and this will only be a Windows app. function THanSimulatorMain.ListSerialPorts(LS: TStrings): integer; var I:integer; reg:tregistry; begin Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKeyReadOnly('HARDWARE\DEVICEMAP\SERIALCOMM') then begin LS.Clear; Reg.GetValueNames(LS); for I := 0 to LS.Count - 1 do LS[i] := Reg.ReadString(LS[i]); end; Result := LS.Count; finally Reg.Free; end; end; -- Bo Berglund Developer in Sweden -- _______________________________________________ lazarus mailing list lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus