Code:

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.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить