Показать сообщение отдельно
  #2  
Старый 15.09.2019, 22:55
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вообще, если правильно помню, то при подключении USB устройств (и смарт карт тоже) винда рассылает сообщения всем приложениям. Возможно, надо подписаться на получение соотв. сообщений.
Вот код из моего проекта для отлова просто USB драйвов:
Код:
TForm1 = class(TForm)
...
procedure WMDeviceChange(var Message : TMessage); message WM_DEVICECHANGE;
...
procedure TForm1.WMDeviceChange(var Message: TMessage);
const
  DBT_CONFIGCHANGECANCELED    = $19;
  DBT_CONFIGCHANGED           = $18;
  DBT_CUSTOMEVENT             = $8006;
  DBT_DEVICEARRIVAL           = $8000;
  DBT_DEVICEQUERYREMOVE       = $8001;
  DBT_DEVICEQUERYREMOVEFAILED = $8002;
  DBT_DEVICEREMOVECOMPLETE    = $8004;
  DBT_DEVICEREMOVEPENDING     = $8003;
  DBT_DEVICETYPESPECIFIC      = $8005;
  DBT_DEVNODES_CHANGED        = $7;
  DBT_QUERYCHANGECONFIG       = $17;
  DBT_USERDEFINED             = $FFFF;
var
  ASelFolder : String;
begin
  If FDevChanged Then
    Begin
      ASelFolder := tvFolders.Path;
      tvFolders.Items.BeginUpdate;
      tvFolders.Refresh(tvFolders.Items[0]);
      tvFolders.Path := ASelFolder;
      tvFolders.Items.EndUpdate;
      FDevChanged := False;
    End;

  Case Message.WParam Of
    DBT_DEVICEARRIVAL,
    DBT_DEVICEREMOVECOMPLETE :
      Begin
        CreateDiskShortCuts;
        FDevChanged := True;
      End;
  End;
end;
Как раз Delphi 7.
Короче, копай в эту сторону.
Ответить с цитированием