Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как получить список установленных модемов в Win95/98?

01.01.2007
unit PortInfo;
 
interface
 
uses
Windows, SysUtils, Classes, Registry;
 
function EnumModems: TStrings;
 
implementation
 
function EnumModems: TStrings;
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
                    closekey
; { + }
                    openkey
('\System\CurrentControlSet\Services\Class\Modem', false); { + }
                   
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;
 
end.

Взято с сайта https://blackman.wp-club.net/