Определение подлючен ли USB 3G модем

Есть 3G модем Hyawei E153 с родной прошивкой и драйверами. Windows 11. Delphi 10.3 Компонент TBComPort ver.2.20. Следующим таймером пробую определять подключен ли модем физически. При удалении его из порта СОМ6 в диспетчере устройств исчезает. Здесь же всегда выполняется Трай...

procedure TfrmMain.Timer1Timer(Sender: TObject);
begin
//вывод информация в таскбар, мемо, активация кнопок...
  begin
    try
      frmMain.BComPort1.Port := 'COM6';//ComPortNumber;
      frmMain.BComPort1.Open;
      Modem_Status := 'Модем подключен';
      frmMain.btnSendSMS.Enabled:=true;
      frmMain.BComPort1.Close;
    except
      Modem_Status := 'Модем отключен';
      frmMain.btnSendSMS.Enabled:=false;
    end;
  end;
  frmMain.StatusBar1.Panels[0].Text := ComPortNumber;
  frmMain.StatusBar1.Panels[1].Text := Modem_Status;
  frmMain.StatusBar1.Panels[2].Text := 'Версия : ' + GetFileVersion;
end;

Ответы (1 шт):

Автор решения: MBo

Проверьте, срабатывает ли при вставке или удалении устройства извещение системы через обработку сообщения WM_DEVICECHANGE с параметрами

wparam = DBT_DEVICEARRIVAL
wparam = DBT_DEVICEREMOVECOMPLETE

и типом устройства

if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = DBT_DEVTYP_PORT then

Кроме того, раз в диспетчере устройств модема нет, то и в реестре его, скорее всего, не будет - можно выполнять поиск в реестре hardware\devicemap\serialcomm, однако, вероятно, лучше через SetupAPI проверять (первая попавшаяся страница, не тестировал).

С извещением работать, думаю, предпочтительнее.

→ Ссылка