Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1

История подключения флэшки.

26.04.2012, 23:55. Показов 1542. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всё работает и всё кажется отлично, но!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void __fastcall TForm1::WMDeviceChange( TMessage &Message ) {
    if ( Message.Msg == WM_DEVICECHANGE && Message.WParam == 0x8000 ) {
        char DiskLabel[MAX_PATH];
        WORD OldErrorMode;
        AnsiString dl;
        DWORD dr = GetLogicalDrives( );  // функция возвращает битовую маску
        for ( int x = 0; x < 26; x++ ) { // проходимся циклом по битам
            if ( ( dr >> x ) & 1 ) {     // узнаём значение текущего бита, если единица - диск с номером x есть
                dl = AnsiString( ( char )( 65 + x ) ) + "://"; // получаем литеру диска
                OldErrorMode = SetErrorMode( SEM_FAILCRITICALERRORS ); // убираем показ ошибок
                bool ready = DirectoryExists(dl); // пытаемcя открыть корневую директорию
                if (ready)
                {   // пытаемcя открыть корневую директорию
                    UINT DriveType = GetDriveType( dl.c_str( ) ); // получаем тип диска
                    if ( DriveType != DRIVE_CDROM && // исключаем CDROMы
                            DriveType != DRIVE_FIXED && // исключаем  HDD
                             DriveType != DRIVE_RAMDISK &&
                             DriveType != DRIVE_REMOTE &&
                             DriveType != DRIVE_NO_ROOT_DIR &&
                             DriveType != DRIVE_UNKNOWN)
                            {
                            Edit1->Text=dl;
 ShellExecute( Handle, "open", dl, NULL, NULL, SW_RESTORE );//ну или почти так(суть не в этом)[
если мы делаем так то -
Он откроет все флэшки подключенный на данный момент, а не последнюю подключенную.Как исправить?
Или по времени сравнивать их,и открыть последний подключенный...По букве не прокатит.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.04.2012, 23:55
Ответы с готовыми решениями:

Определение подключения/отключения флэшки. Qt и WinAPI
Помогите пожалста победить проблему – требуется в Qt проге определять подкл./откл. флэшки. Написал такой код: class qt_1 : public QWidget...

Извлечение флэшки с программы которая запущена с той же флэшки
Пишу типа авторана для флэшки. И там я хочу написать код который-би безопасно извлекал флэшку. Использую юнит который с большим трудом...

История ICQ, Skype и история браузеров. Как экспортировать и где хранится?
Доброго времени суток. Требуется из телефона на базе ОС Андроид, а именно аппарат Lenovo 700i, извлечь истории сообщений в ICQ и скайп и...

5
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
27.04.2012, 08:46
При подключении флэшки суйте ее серийник в стек, а когда надо открыть последнюю подключенную, берете последний серийник из стека и делаете по нему выборку из всех логический дисков.
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
27.04.2012, 20:20  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
При подключении флэшки суйте ее серийник в стек, а когда надо открыть последнюю подключенную, берете последний серийник из стека и делаете по нему выборку из всех логический дисков.
Последний серийник, хм WMDeviceChange сканирует все флэшки причем формирует их по алфавиту..
А при подключении флэшки не извесно, какую букву будет иметь флэшка.(выше или ниже подключенной) как то так.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
27.04.2012, 20:51
Какая разница, чего флэшка будет или не будет иметь? Список томов интересующего вас типа DRIVE_REMOVABLE изменился, в нем появился элемент, которого в нем доселе не было - это единственное, что должно волновать вас на этой стадии.

Программка запустилась, составила список томов, смонтированных в системе, и запомнила его. Программка получила оповещение WM_DEVICECHANGE об изменении конфигурации оборудования, составила список томов повторно, сравнила его с ранее сохраненным и, вуаля - вот она, искомая флэшка.
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
27.04.2012, 21:01  [ТС]
BRcr, что то я туплю как всегда
Code
1
2
27.04.2012 19:56:52  -  Подключен накопитель: (F://) 
27.04.2012 19:56:52  -  Подключен накопитель: (G://)
1 флэшка стояла в системе, 1 подключил...В логе появилось 2 записи.
Причём диск (G://) был подключен часа 2 назад....
Код использую что вверху.
WM_DEVICECHANGE сканирует все DRIVE_REMOVABLE и выводит всё.
Нужно сравнить, не подскажите как?
0
 Аватар для QWIPQ
144 / 123 / 14
Регистрация: 10.10.2011
Сообщений: 366
Записей в блоге: 2
27.04.2012, 21:22
Цитата Сообщение от EdarGp Посмотреть сообщение
Или по времени сравнивать их,и открыть последний подключенный...По букве не прокатит.
посмотри тот проект что я скидывал в предыдущей твой теме
там я обошел эт следующим образом:
1) при первичном включении проги искал ВСЕ подключенное к компу в данный момент и выводится в верхнее мемо
2) как ток подключается флешка у меня организован поиск по тому что есть и выводит ток её данные в нижнее
или
допустим флеха стояла когда произошло включение проги, можн сделать следующее:
1) как только вытаскивают флешку над в мемко данные обновить и не добавлять туда
2) как ток снов вставляется флеха одной просто делай поиск этой флехе в мемо если её нет то добавь её туда

можн организовать через одну мемку или стринглист или любой др вид эмитированного списка...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.04.2012, 21:22
Помогаю со студенческими работами здесь

Внутри флэшки ярлык флэшки
Добрый день! Уже не знаю который день внутри флэшки лежит ярлык на саму флэшку через который можно открыть файлы.Но буквально вчера или...

История человечества - это история огня?
У меня есть пара вопросов. 1. Вот древний человек добывал огонь с помощью трения. А сколько времени это потребовало бы сейчас? И что...

История открытых/созданных файлов в программе файлов (история), записывать в файл либо бд, или ещё как-то
Ребят, помогите нужно сделать историю открытых/созданных файлов в menustrip1 Как это сделать? Занести имена файлов и путь, можно ещё по...

Плагины для 1С Битому: "Избранное", история просмотров, история посещения
Всем здравствуйте. Ситуация следующая: я разрабатываю сайт годового отчета. Посмотрел отчеты других компаний, нашел там инструменты,...

Настройка сетевого подключения по умолчанию в rashbian для подключения к сети интернет
Всем здравствуйте! На orange PI zero поднял ОС rashbian с необходимым ПО. Всё работает как надо. Но есть проблемка! Нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru