Question:
How can I get the modem status under Win32?
Answer:
The following example demonstrates retrieving the current state 
of the modem control-register values under Win32.
Example:
procedure TForm1.Button1Click(Sender: TObject);
var
 CommPort : string;
 hCommFile : THandle;
 ModemStat : DWord;
begin
 CommPort := 'COM2';
 {Open the comm port}
 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;
 {Get the Modem Status}
 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;
 {Close the comm port}
 CloseHandle(hCommFile);
end;