Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.13;
Скачать: CL | DM;

Вниз

Как определить что пользователь вставил сьемный диск.   Найти похожие ветки 

 
Reals   (2007-12-14 16:36) [0]

Здравствуйте!

Возможно ли как-то в своем приложении определить, что пользователь вставил например флешку (появился новый сьемный диск в системе), и обновить ListBox со списками доступных дисков? А когда пользователь вытащил флешку, то опять же запускается процедура перечитки достцпных дисков.

P.S. Процедура генерирующая список доступных дисков имеется, нужно только научится поставить какой-то hook на систему, что появился новый диск.

Заранее премного благодарен!
Спасибо!


 
www   (2007-12-14 16:43) [1]

зачем хук
система рассылает сообщение об изменении аппаратного состава


 
Reals   (2007-12-14 16:46) [2]

Так подскажите как "словить" это сообщение?

Спасибо!


 
Free_Breeze   (2007-12-14 16:51) [3]

а нельзя по таймеру сравнивать предидущее значение доступных дисков с новым?


 
Джо ©   (2007-12-14 16:52) [4]

Сообщение WM_DEVICECHANGE.


 
Kolan ©   (2007-12-14 16:55) [5]

Не флешка, но разобраться можно:

procedure WMDEVICECHANGE(var Msg : TWMDeviceChange); message WM_DEVICECHANGE;

procedure TMainForm.WMDEVICECHANGE(var Msg: TWMDeviceChange);
var
 lpdb  : PDevBroadcastHdr;
 lpdbpr: PDevBroadCastPort;
 S: string;
begin
{Заголовок сообщения}
lpdb := PDevBroadcastHdr(Msg.dwData);
case Msg.Event of
  DBT_DEVICEARRIVAL:
  begin {Добавление}
    if lpdb^.dbch_devicetype = DBT_DEVTYP_PORT then begin
      lpdbpr:= PDevBroadCastPort(Msg.dwData);
      S := StrPas(@lpdbpr.dbcp_name);

      SetComName(S);
    end;
  end;
  DBT_DEVICEREMOVECOMPLETE:
  begin {Удаление}
    if lpdb^.dbch_devicetype = DBT_DEVTYP_PORT then begin
      lpdbpr:= PDevBroadCastPort(Msg.dwData);
      S := StrPas(@lpdbpr.dbcp_name);
      if S = GetComName then
      begin
        SetComName("COM1");
      end;
    end;
  end;
end;
end;


 
Kolan ©   (2007-12-14 16:57) [6]

> а нельзя по таймеру сравнивать предидущее значение доступных
> дисков с новым?

— А эти грибы можно есть?
— Можно.
— &#133
— Только отравишся.


 
Reals   (2007-12-14 17:13) [7]

To: [5] Kolan

Спасибо огромное. Разобрался, немного переделал и все получилось.

Удачи!


 
Kolan ©   (2007-12-14 17:15) [8]

> Разобрался, немного переделал и все получилось.

Ну и хорошо. :)


 
Stas ©   (2007-12-14 17:18) [9]

Procedure NewDevice(var Msg:TMessage); message WM_DEVICECHANGE;
procedure TForm1.NewDevice(var Msg:TMessage);
begin
 if (msg.WParam=$8000) or (msg.WParam=$8004)
  then ...
end;



Страницы: 1 вся ветка

Текущий архив: 2008.01.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
2-1197720419
niKo
2007-12-15 15:06
2008.01.13
Linux


6-1178270779
Lobach
2007-05-04 13:26
2008.01.13
Обработка ошибки


11-1182424519
LazyBob
2007-06-21 15:15
2008.01.13
Некорректный шрифт на KolGroupBox


6-1178027712
denissoft
2007-05-01 17:55
2008.01.13
программно отключить соединение по локальной


15-1197242031
Andy BitOff
2007-12-10 02:13
2008.01.13
Это может быть вам интересно