Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.014 c
8-1168421631
olegnik
2007-01-10 12:33
2008.01.13
Преобразование изображения 24b в 8b?


2-1197566659
Свой
2007-12-13 20:24
2008.01.13
Добавить символы(строку) в строку


2-1197379946
alikon1
2007-12-11 16:32
2008.01.13
BDE Query


8-1171869199
_iceman_
2007-02-19 10:13
2008.01.13
GDI & Antializing


6-1178102766
alexandri
2007-05-02 14:46
2008.01.13
чем можно подключится к серверу используя ssl




   Наверх