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

Как узнать состояние модема в Win32?

01.01.2007

Следующий пример демонстрирует получение состояния управляющих регистров модема.

Пример:

procedure TForm1.Button1Click(Sender: TObject); 
var
 
CommPort : string;
  hCommFile
: THandle;
 
ModemStat : DWord;
begin
 
CommPort := 'COM2';
 
{Открываем com-порт}
  hCommFile
:= CreateFile(PChar(CommPort),
                          GENERIC_READ
,
                         
0,
                         
nil,
                          OPEN_EXISTING
,
                          FILE_ATTRIBUTE_NORMAL
,
                         
0);
 
if hCommFile = INVALID_HANDLE_VALUE then
 
begin
   
ShowMessage('Unable to open '+ CommPort);
   
exit;
 
end;
 
{Получаем состояние модема}
 
if GetCommModemStatus(hCommFile, ModemStat) <> false then begin
   
if ModemStat and MS_CTS_ON <> 0 then
     
ShowMessage('The CTS (clear-to-send) is on.');
   
if ModemStat and MS_DSR_ON <> 0 then
     
ShowMessage('The DSR (data-set-ready) is on.');
   
if ModemStat and MS_RING_ON <> 0then
     
ShowMessage('The ring indicator is on.');
   
if ModemStat and MS_RLSD_ON <> 0 then
     
ShowMessage('The RLSD (receive-line-signal-detect) is
on.'
);
end;
 
{Закрываем com-порт}
 
CloseHandle(hCommFile);
end;

Взято из https://forum.sources.ru