Вниз
Скачать: CL | DM;

WM_DEVICECHANGE - отлов подключения/отключения USB-устройства   Найти похожие ветки 

 
Nickolay ©   (2005-12-16 15:49) [0]

Цель: отловить момент подключения устройства к USB-порту, чтобы, допустим,
открыть этот порт (для FTDI-устройств), сообщить оператору, запустить
какую-либо программу и т. п...

Обрабатываю сообщение WM_DEVICECHANGE.

procedure WMDeviceChange(var Message: TMessage); message WM_DEVICECHANGE;

...

procedure TForm1.WMDeviceChange(var Message: TMessage);

begin
// смотрим что нам пришло...
 Memo1.Lines.Add("Получено сообщение с кодом " +
IntToStr(Message.wParam));
...
 Inherited;
end;

Но! Допустим, пробую подключать накопитель Flash-памяти обычный.
Приходят:
1) три сообщения с кодом 7
задержка ~1-2 сек
2) два сообщения с кодом 7
3) одно сообщение с кодом 32768 (устройство включено и доступно)
4) одно сообщение с кодом 7

Отключаю тот же накопитель.
Приходят:
1) три сообщения с кодом 7
2) одно сообщение с кодом 32772 (устройство удалено).

Далее.
Подключаем устройство на FT245BM.
Приходят:
1) одно сообщение с кодом 7
задержка ~3 сек
2) одно сообщение с кодом 7

Отключаем устройство на FT245BM.
Приходят:
1) одно сообщение с кодом 7

Почему так много сообщений?!
О чём говорит такое количество сообщений?
Что за сообщение с кодом 7? Описание его я не нашёл!

Помогите, пожалуйста! Я в замешательстве.

Спасибо!


 
clickmaker ©   (2005-12-16 16:16) [1]

/*
* Message = WM_DEVICECHANGE
* wParam  = DBT_DEVNODES_CHANGED
* lParam  = 0
*
*      send when configmg finished a process tree batch. Some devnodes
*      may have been added or removed. This is used by ring3 people which
*      need to be refreshed whenever any devnode changed occur (like
*      device manager). People specific to certain devices should use
*      DBT_DEVICE* instead.
*/

#define DBT_DEVNODES_CHANGED            0x0007


 
Nickolay ©   (2005-12-16 16:44) [2]

Да-да-да... спасибо!
Про DBT_DEVNODES_CHANGED я уже почитал. Но, непонятно, что будет с этим кодом в Win98?! Это сообщение просто не придёт или придёт с другим кодом? Т. е., если я хочу, чтобы моё приложение работало и под XP и под 98, то я не должен обрабатывать сообщение с параметром 7?

Я не понимаю почему приходит так много семёрок и что с ними делать :)

Почему для FLASH Windows помимо 7 генерит ещё 32768 и 32772, а для FT только 7?!



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

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



Память: 0.45 MB
Время: 0.027 c
2-1139979251
Risk
2006-02-15 07:54
2006.03.05
Глюк ADODataSet


1-1138621301
Ega23
2006-01-30 14:41
2006.03.05
Создание ShortCut в run-time


1-1138963801
tytus
2006-02-03 13:50
2006.03.05
Добрый день ВСЕМ! Как ускорить поиск в списке TList?


4-1134322223
Destroyer
2005-12-11 20:30
2006.03.05
Узнать какие диски присутствуют


2-1139663837
Glex
2006-02-11 16:17
2006.03.05
Как поймать мышиное сообщение и передать его контролу?




   Наверх