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

Вниз

Как из Делфи узнать, что к компу подключена флэшка?   Найти похожие ветки 

 
Zhekacoder   (2006-05-03 12:16) [0]

Каким образом можно программно узнать, что к компу подключена флэшка?


 
Deka ©   (2006-05-03 13:42) [1]

Отловить сообщение об изменении логических дисков. По крайней в этой стороне надо искать.


 
n0name   (2006-05-03 13:52) [2]

http://delphimaster.net/view/4-1145187125/


 
begin...end ©   (2006-05-03 13:54) [3]

WM_DEVICECHANGE ?


 
Zhekacoder   (2006-05-04 11:41) [4]

Приведите плиз рабочий код, Deka, я это и пытаюсь сделать :-)


 
Deka ©   (2006-05-04 14:42) [5]

Я работаю с фотоаппаратами. Управляю ими польностью с компьютера. Управление идёт по USB. Мне необходимо было отлавливать момент подключения/отключения фотоаппаратов к компу. При подключении/отключении фотоаппарата в системе появляется/исчезает логический диск соотвествующий памяти фотоаппарата. Вот такой код отлавливает нужный мне момент:

procedure TTimerForm.WMDeviceChange(var aMessage: TMessage);
type
 PDevBroadcastHdr = ^DEV_BROADCAST_HDR;
 DEV_BROADCAST_HDR = packed record
   dbch_size: DWORD;
   dbch_devicetype: DWORD;
   dbch_reserved: DWORD;
 end;

const
 DBT_DEVICEARRIVAL = $8000;
 DBT_DEVICEQUERYREMOVE = $8001;
 DBT_DEVICEREMOVECOMPLETE = $8004;
 DBT_DEVTYP_VOLUME = $00000002;  // Новый логический том

var
 devType: DWORD;
 
begin
 // В системе появилось новое устройство.
 // Подключение фотоаппарата ВСЕГДА сопровождается появлением в системе
 // нового логического диска. Поэтому именно это уведомление ключевое!
 inherited;
 
 Case aMessage.wParam of

   DBT_DEVICEARRIVAL: begin  // Новое устройство готово к работе
     devType:= PDevBroadcastHdr(aMessage.LParam)^.dbch_devicetype;
     If devType = DBT_DEVTYP_VOLUME then begin
       PostMessage(TimerForm.Handle, UM_ScanDevice, 0, 0);
     end;
   end;

   DBT_DEVICEREMOVECOMPLETE: begin  // Устройство удалено из системы
     devType:= PDevBroadcastHdr(aMessage.LParam)^.dbch_devicetype;
     If devType = DBT_DEVTYP_VOLUME then begin
       PostMessage(TimerForm.Handle, UM_ScanDevice, 0, 0);
     end;
   end;

   DBT_DEVICEQUERYREMOVE: begin  // Устройство скоро будет удалено
     devType:= PDevBroadcastHdr(aMessage.LParam)^.dbch_devicetype;
     If devType = DBT_DEVTYP_VOLUME then begin
       PostMessage(TimerForm.Handle, UM_ScanDevice, 0, 0);
     end;
   end;
 end;
end;

Когда разбирался с этим нашел несколько примеров. В том числе и с регистрацией "ловушки" (получателя уведомлений?) для такого рода событий, но не разобрался зачем он нужен, если и без него работает. Выкинул его и довольствуюсь тем, что написано. В принципе пока работает. Возможно что-то кривовато и кто-то поправит.


 
krid24 ©   (2006-05-04 14:43) [6]

Zhekacoder , в DDK есть пример, который отлавливает подключение/отключение USB устройств. Лежит в NTDDK\SRC\WDM\USB\USBVIEW (или в аналогичных ветках для других DDK)


 
Deka ©   (2006-05-04 14:53) [7]

Возможно в системе может появиться новый логический диск который не будет соотвествовать вставленной флешке. Мне то это все равно, потому-что при появлении диска я просто пересчитываю подключенные к компу фотоаппараты, а вот как гарантировать то, что подключилась именно флешка я не знаю. Возможно можно попробовать прочитать какие-то характеристики каждого логического диска и по ним определиться. Т.е. вместо процедуры сканирования новых фотоаппаратов применить процедуру сканирования дисков с заданными характеристиками. И еще где-то на форуме уже была похожая тема...
И вот ещё...
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=20674



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

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

Наверх




Память: 0.48 MB
Время: 0.03 c
2-1154794421
Yusuf
2006-08-05 20:13
2006.08.27
Большие текстовые файлы


11-1131441743
Vladimir Kladov
2005-11-08 12:22
2006.08.27
Версия 2.22


6-1144670401
Aleksandr.
2006-04-10 16:00
2006.08.27
Как правильно приаттачить файлы для отправки через mapi?


2-1154762266
max1991
2006-08-05 11:17
2006.08.27
OpenDialog


15-1154333399
GrayFace
2006-07-31 12:09
2006.08.27
Magic Forum Patch v0.0