Текущий архив: 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]> а нельзя по таймеру сравнивать предидущее значение доступных
> дисков с новым?
— А эти грибы можно есть?
— Можно.
— …
— Только отравишся.
← →
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.46 MB
Время: 0.006 c