Enumerate Modems (Views: 714)
Problem/Question/Abstract: How to enumerate modems? Answer: uses registry; function EnumModems: TStringList; var R: TRegistry; s: ShortString; N: TStringList; i: integer; j: integer; begin Result := TStringList.Create; R := TRegistry.Create; try with R do begin RootKey := HKEY_LOCAL_MACHINE; if OpenKey('\System\CurrentControlSet\Services\Class\Modem', False) then if HasSubKeys then begin N := TStringList.Create; try GetKeyNames(N); for i := 0 to N.Count - 1 do begin OpenKey(N[i], False); s := ReadString('AttachedTo'); for j := 1 to 4 do if Pos(Chr(j + Ord('0')), s) > 0 then Break; Result.AddObject(ReadString('DriverDesc'), TObject(j)); CloseKey; end; finally N.Free; end; end; end; finally R.Free; end; end; |