|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|||||||||||
Перехват wm_devicechange09.07.2017, 07:44. Показов 2351. Ответов 18
Здравствуйте написал простенькую программку по отлову сообщений вставки usb носителей. Собственно данный код отлавливает события.Приходит и DBT_DEVTYP_DEVICEINTERFACE и DBT_DEVTYP_VOLUME Но мне нужно сделать так чтобы программа отлавливала события без окна(или хотя бы чтобы окно было скрыто). Но когда я делаю
0
|
|||||||||||
| 09.07.2017, 07:44 | |
|
Ответы с готовыми решениями:
18
WM_DEVICECHANGE WinAPI C++ WM_DEVICECHANGE
|
|
Ушел с форума
|
|
| 09.07.2017, 21:08 | |
|
Вместо SW_HIDE лучше использовать HWND_MESSAGE в CreateWindow.
0
|
|
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|||||||||||
| 09.07.2017, 22:13 [ТС] | |||||||||||
|
вместо
0
|
|||||||||||
|
Ушел с форума
|
|
| 10.07.2017, 09:29 | |
|
А RegisterDeviceNotification у тебя вызывается?
Тут загвоздка в том, что без RegisterDeviceNotification сообщение WM_DEVICECHANGE приходит только в top-level окна. Если ты делаешь ShowWindow(SW_HIDE) или создаешь окно с HWND_MESSAGE, то окно таким не является и сообщение не приходит.
0
|
|
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|
| 10.07.2017, 11:13 [ТС] | |
|
RegistrDeviceNotification у меня в обработке WM_PAINT. Я так понял что событие wm_paint не приходит когда я создаю окно с hwnd_message поэтому registerdevicenotification не выполняется.
Добавлено через 33 минуты Я так понял если использовать hwnd_message то в каком событии лучше регистрировать registerdevicenotification? В wm_create? Добавлено через 19 минут В итоге c hwnd_message создал глобальную булевую переменную и при первом заходе в wm_create регистрирую registerdevicenotification с dbt decrypted interface. И оно приходит. Не приходит dbt_devtype_volume. Но как я правильно понимаю его теперь тоже нужно регистрировать в отдельной registrdevicenotification?
0
|
|
|
Ушел с форума
|
|||
| 10.07.2017, 11:27 | |||
|
В WM_PAINT таким вещам не место (эти сообщения ведь приходят сотнями и тысячами).
0
|
|||
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
||||||
| 10.07.2017, 12:05 [ТС] | ||||||
|
Да Я уже перенес все wm_create
Регистрирую dev broadcast volume после dev broadcast dev interface
Я подозреваю что нужно еще что-то задать?
0
|
||||||
|
Ушел с форума
|
||
| 10.07.2017, 12:09 | ||
|
Да. См. описание структуры DEV_BROADCAST_VOLUME в MSDN:
тогда уведомления будут приходить только при событиях на соответствующем диске. Так, например, можно отслеживать попытки извлечения USB-флэшки.
0
|
||
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|
| 10.07.2017, 12:36 [ТС] | |
|
Я так понимаю нужно задать как минимум еще dbcv_unitmask но я не знаю как...
Мне нужно чтобы приходило при втыкании любого USB носителя. Как задать значение не подскажете?
0
|
|
|
Ушел с форума
|
||||||
| 10.07.2017, 12:45 | ||||||
|
Попробуй так:
0
|
||||||
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|
| 10.07.2017, 14:29 [ТС] | |
|
Те вы удтверждаете dev type volume нельзя поймать через окно hwnd_message?
Добавлено через 39 минут Задал маску сообщение все равно не приходит dbt_devtype_volume
0
|
|
|
Ушел с форума
|
||
| 10.07.2017, 14:37 | ||
|
Просто подписываться на сообщения от тома, как мне кажется, можно только если сам том существует.
0
|
||
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|
| 10.07.2017, 15:10 [ТС] | |
|
Так как же получить DBT_DEVTYPE_VOLUME .......?
0
|
|
|
Ушел с форума
|
||
| 10.07.2017, 15:28 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|
| 10.07.2017, 16:25 [ТС] | |
|
Getlasterror возвращает 1066 по описанию это error_service_specific_error
Registerdevicenotification возвращает null
0
|
|
|
Ушел с форума
|
|
| 10.07.2017, 16:33 | |
|
Значит, предположение подтвердилось и подписываться на сообщение WM_DEVICECHANGE + volume
можно только для существующих томов (как и для DBT_DEVTYPE_HANDLE, например). А отслеживать появление тома можно иначе. Например, RegisterDeviceNotification + DBT_DEVTYP_DEVICEINTERFACE и по приходу сообщения WM_DEVICECHANGE с кодом DBT_DEVICEARRIVAL искать новые буквы дисков в GetLogicalDriveStrings.
0
|
|
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|
| 10.07.2017, 16:54 [ТС] | |
|
Те вы предлагаете как я понял ПОСЛЕ запуска программы делать снимок дисков а потом в wm_devicechange проверять его?
0
|
|
|
Ушел с форума
|
|
| 10.07.2017, 16:58 | |
|
Да, как вариант.
0
|
|
|
1 / 1 / 0
Регистрация: 18.02.2014
Сообщений: 213
|
|
| 10.07.2017, 18:11 [ТС] | |
|
Спасибо за помощь. Но возможно будут еще вопросы.
0
|
|
| 10.07.2017, 18:11 | |
|
Помогаю со студенческими работами здесь
19
Как обработать WM_DEVICECHANGE? WM_DEVICECHANGE RegisterDeviceNotification PDEV_BROADCAST_HDR
RegisterDeviceNotification / WM_DEVICECHANGE / VID _ PID Обработка события подключения и отключения USB(WM_DEVICECHANGE) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|