У диалапера спрашивают:
- А что ты тестируешь, качество связи с новым провайдером?
- Нет, свои нервы... сколько они еще смогут выдержать этот коннект!!!
unit PortInfo;
interfaceuses
Windows, SysUtils, Classes, Registry;
function EnumModems: TStrings;
implementationfunction EnumModems : TStrings;
var
R : TRegistry;
s : ShortString;
N : TStringList;
i : integer;
j : integer;
begin
Result:= TStringList.Create;
R:= TRegistry.Create;
trywith R dobegin
RootKey:= HKEY_LOCAL_MACHINE;
if OpenKey('\System\CurrentControlSet\Services\Class\Modem', False) thenif HasSubKeys thenbegin
N:= TStringList.Create;
try
GetKeyNames(N);
for i:=0 to N.Count - 1 dobegin
closekey; { + }
openkey('\System\CurrentControlSet\Services\Class\Modem', false);
OpenKey(N[i], False);
s:= ReadString('AttachedTo');
for j:=1 to 4 doif 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.
Программный модуль на языке Pascal для Delphi, который извлекает список установленных модемов на Windows 95/98.
Интерфейс
Вحدة PortInfo определяет функцию EnumModems, которая возвращает объект TStrings, содержащий список установленных модемов.
Имплементация
Функция EnumModems использует следующие переменные:
R: Объект TRegistry для взаимодействия с реестром Windows.
s: Краткая строковая переменная для хранения значения ключа AttachedTo.
N: Объект TStringList для хранения имен подключенных кейсов под \System\CurrentControlSet\Services\Class\Modem.
i и j: Целочисленные переменные, используемые как счетчики цикла.
Функция выполняет следующие действия:
Создает новый объект TRegistry (R) и устанавливает корневой ключ в HKEY_LOCAL_MACHINE.
Открывает ключ \System\CurrentControlSet\Services\Class\Modem и проверяет, имеет ли он подключенные кейсы.
Если есть, создает новый объект TStringList (N) и пополняет его именами подключенных кейсов с помощью GetKeyNames.
Перебирает каждый подключенный кейс в N, закрывая и открывая ключ для чтения значений:
Читает значение ключа AttachedTo для каждого подключенного кейса.
Найдет первый цифровой символ (0-3) в строке значения, который представляет собой номер COM-порта.
Добавляет объект в результат список, содержащий описание драйвера и номер COM-порта.
В конце освобождает объекты TRegistry и TStringList.
Результатом является объект TStrings, содержащий список строк, где каждая строка имеет формат "Описание драйвера (номер COM-порта)".
Обратите внимание, что это код использует синтаксис и библиотеки Delphi, поэтому он может не быть напрямую переносимым в другие языки или платформы.
В статье описывается программное решение для получения списка установленных модемов в операционной системе Windows 95-98, реализованное с помощью языка программирования Pascal и использования API Windows.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.