|
13 / 13 / 4
Регистрация: 08.12.2010
Сообщений: 42
|
|
Отлавливание подключения флешки18.12.2010, 13:54. Показов 10939. Ответов 17
Метки нет (Все метки)
Доброе время суток, такая проблема: в программе нужно ловить событие подключения флешки, я пытаюсь это сделать через событие OnMessage компонента ApplicationEvents.
Так вот суть в том, что при подключении\отключении это событие возникает раз 10 с сообщением 0x0219 (WM_DEVICECHANGE), а параметр (wParam) всегда равен 0x0007 (DBT_DEVNODES_CHANGED), lParam всегда ноль. Как мне отловить это событие с параметром 0x8000 (DBT_DEVICEARRIVAL), или через TApplicationEvents так не получится и надо это делать руками через winapi, в котором я, к сожалению, не сильно шарю...?
1
|
|
| 18.12.2010, 13:54 | |
|
Ответы с готовыми решениями:
17
Скрыть факт подключения флешки Сломался планшет из-за подключения флешки |
|
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
||||||||||||||||
| 18.12.2010, 14:06 | ||||||||||||||||
Сообщение было отмечено как решение
Решение
FrenchOpen, нужно обрабатывать WM_DEVICECHANGE и DBT_DEVICEARRIVAL (WParam).
Я делал это без компонента ApplicationEvents (считаю его бесполезным). А вот перехватывать сообщения общепринятым методом я вас научу. ![]() В заголовочном файле, в public области объявляем "перехват" сообщений WM_DEVICECHANGE:
![]() Не по теме: TDevScan - название класса, в котором вы объявили "перехват".
4
|
||||||||||||||||
|
13 / 13 / 4
Регистрация: 08.12.2010
Сообщений: 42
|
|
| 18.12.2010, 14:15 [ТС] | |
|
Вот как раз то TDevScan он признавать не хочет:
[C++ Error] Unit1.cpp(13): E2090 Qualifier 'TDevScan' is not a class or namespace name
0
|
|
|
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
|
| 18.12.2010, 14:17 | |
|
FrenchOpen, я же не зря написал, что это название того класса, в котором вы объявляете перехват необходимых сообщений.
Я назвал свою форму DevScan и класс называется TDevScan. А у вас возможно будет TForm1, если вы не переименовывали форму.
1
|
|
|
13 / 13 / 4
Регистрация: 08.12.2010
Сообщений: 42
|
|
| 18.12.2010, 14:20 [ТС] | |
|
ах, туплю я с утра, спать надо больше... все работает, спасибо большое
0
|
|
|
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
|
|
| 18.12.2010, 14:22 | |
|
Можешь посмотреть как оно на Делфи здесь Реакция на флешку
0
|
|
|
61 / 49 / 6
Регистрация: 07.01.2010
Сообщений: 307
|
|
| 25.03.2011, 20:56 | |
|
Сори за тупой вопрос, но почему пишет ошибку??
undefined symbol 'DBT_DEVICEARRIVAL' Я закоментил эту часть, добавил ShowMessage, запустил прогу и вставил флешку - теперь раз 6 вылетает ShowMessage. Как сделать что бы эта функция вызывалась один раз??? Добавлено через 33 минуты Нашел. поменял DBT_DEVICEARRIVAL на 0x8000. Теперь один раз вызывается функция
0
|
|
|
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
|
|
| 26.03.2011, 10:29 | |
|
DBT_DEVICEARRIVA это где?
0
|
|
|
61 / 49 / 6
Регистрация: 07.01.2010
Сообщений: 307
|
||||||
| 26.03.2011, 10:32 | ||||||
|
Я уже разобрался - просто надо было подключить хидеры:
1
|
||||||
|
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
|
|
| 29.03.2011, 21:19 | |
|
Перехват это есть хорошо а как запретить (а в случае необходимости разрешить) - отображать значок флешки в окне мой компьютер и в проводнике.
вот фото
0
|
|
|
18 / 34 / 2
Регистрация: 28.01.2012
Сообщений: 181
|
||||||
| 22.04.2012, 13:01 | ||||||
|
Samrisbe, можно отмонтировать файловую систему флешки функцией
1
|
||||||
|
|
|
| 22.04.2012, 19:22 | |
|
Dondok, а можно пример?
Да и как узнать что надо отмонтировать? Как отследить момент отключения флэшки В устройстве нет диска. Вставьте диск в устройство
0
|
|
|
Почемучка)
|
||||||
| 22.04.2012, 20:23 | ||||||
|
Вот полностью рабочий код, всё ловит.
1
|
||||||
|
18 / 34 / 2
Регистрация: 28.01.2012
Сообщений: 181
|
||||||||||||||||
| 22.04.2012, 21:30 | ||||||||||||||||
Сообщение было отмечено как решение
Решение
EdarGp, отлавливать момент подключения одно дело, а вот блокирование/разблокирование это уже другое. Я например блокировку производил путем отмонтирования файловой системы флешки, но с учетом того что вдруг потом снова надо разблокировать надо вычислить GUID этой флешки перед отмонтированием. Приду домой рабочий код выложу, а пока просто перечислю какие функции надо использовать
Avazart, пример вечером выложу Добавлено через 44 минуты
3
|
||||||||||||||||
|
|
||||||
| 24.04.2012, 00:56 | ||||||
|
Допустим флешка размонтирована и GUID не записан, как его узнать можно?
Добавлено через 2 часа 18 минут
№1: {******-******-****-******} №2: ******-******-****-******
0
|
||||||
|
18 / 34 / 2
Регистрация: 28.01.2012
Сообщений: 181
|
|||||||||||
| 24.04.2012, 20:48 | |||||||||||
|
QWIPQ, GUID должен передаваться в таком формате:
QWIPQ, если не знаешь GUID, то может в цикле перебрать все параметры из реестра по пути HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices Добавлено через 6 минут
необходимо перед чтением из реестра повысить права в реестре, иначе не получится прочитать значения из реестра
1
|
|||||||||||
|
|
||||||||||||||||||||||||||
| 25.04.2012, 13:45 | ||||||||||||||||||||||||||
|
спасибо уже разобрался, в таком виде мы его получаем
вот пример:
Dondok объясни плз как эт, на первую незанятую букву в системе? проверка на занятость никакая не идет, просто буквы циклом перебираются... по сути дела присваивается каждой букве, а какая последняя будет на ту в итоге и монтируется... или все же не так?
0
|
||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 09.11.2016
Сообщений: 1
|
|
| 20.03.2017, 11:10 | |
|
У меня, почему-то, не совпадает GUID который выдает формула SetVolumeMountPoint с тем, который записывается в реестр. Кто знает, что это может быть?
0
|
|
| 20.03.2017, 11:10 | |
|
Помогаю со студенческими работами здесь
18
Отслеживание события подключения флешки Событие подключения флешки и её форматирования После подключения флешки появились неполадки с пк Отслеживание подключения флешки через VBS-скрипт После подключения флешки перестал работать wi-fi адаптер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|