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

Вот мой код из одного из проектов. Довит появление/удаление диска (работает на CD/DVD и флешках, проверял):
Код:
procedure TBrowserMainForm.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;
Зачем описывал все константы - уже не помню, видимо, что бы не потерять список...
Ответить с цитированием