Главная страница
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-1197449417
Nil
2007-12-12 11:50
2008.01.13
Как убрать загловок окна и оставить системное меню


2-1197740918
ShyricK
2007-12-15 20:48
2008.01.13
Работа с видео


15-1197012661
Бакук
2007-12-07 10:31
2008.01.13
Перенос почты Opera 9 —> Outlook 2003


2-1197377079
Бэтман
2007-12-11 15:44
2008.01.13
Проблема с кодировкой


15-1197264407
Gydvin
2007-12-10 08:26
2008.01.13
windows server 2003 и русские названия папок